我有以下代码:
string = "ad\23e\4x{\s"
data = (string,)
当我打印数据时,元组中的字符串对每个斜杠都有一个额外的斜线,总共有6个反斜杠。
如何避免额外的反斜杠?
答案 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 string
或print 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