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

1 投票
3 回答
1177 浏览
提问于 2025-04-17 00:06

我有以下代码:

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")

撰写回答