Python:创建元组时字符串被转义
我有以下代码:
string = "ad\23e\4x{\s"
data = (string,)
当我打印数据时,我的元组中的字符串每个斜杠都会多出一个,总共出现了6个反斜杠。
我该如何避免多出来的反斜杠呢?
3 个回答
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
1
那些多出来的反斜杠其实并不是真正存在于你的字符串里,它们只是Python用来表示字符串的一种方式(这样你可以把它复制到程序里,直接使用)。之所以这样,是因为元组的__str__()
方法会对每个元素调用repr()
。如果你用print string
或者print data[0]
来打印,你就能看到字符串里真正的内容。
4
对象 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")