Python:创建元组时转义字符串

时间:2011-08-22 10:15:14

标签: python tuples

我有以下代码:

string = "ad\23e\4x{\s"
data = (string,)

当我打印数据时,元组中的字符串对每个斜杠都有一个额外的斜线,总共有6个反斜杠。

如何避免额外的反斜杠?

3 个答案:

答案 0 :(得分:3)

对象data是一个元组。当您打印元组时,Python会为每个元素调用repr。如果你想用另一种方式格式化,你必须自己进行转换。

>>> s = "ad\23e\4x{\s"
>>> d = (s,)
>>> print d
('ad\x13e\x04{\\s',)
>>> print '(%s,)' % (', '.join('"%s"' % _ for _ in d))
("adex{\s")

答案 1 :(得分:1)

那些额外的反斜杠实际上并不在你的字符串中,它们就是Python 代表字符串的方式(这个想法是你可以将它粘贴回程序中并且它可以工作)。这样做是因为元组的__str__()实现会在每个项目上调用repr()。如果您print stringprint data[0],您会在字符串中看到实际上的内容。

答案 2 :(得分:0)

你的意思是这样的吗?

In [11]: string = r'ad\23e\4x{\s'

In [12]: string
Out[12]: 'ad\\23e\\4x{\\s'

In [13]: print string
ad\23e\4x{\s

In [14]: data=(string,)

In [15]: data
Out[15]: ('ad\\23e\\4x{\\s',)

In [16]: print data
('ad\\23e\\4x{\\s',)

In [17]: print data[0]
ad\23e\4x{\s