为什么在Python中打印元组会使反斜杠加倍?

时间:2015-03-25 00:06:55

标签: python printing escaping backslash

在Python中,当我使用反斜杠打印字符串时,它只打印一次反斜杠:

>>> print(r'C:\hi')
C:\hi
>>> print('C:\\hi')
C:\hi

但是我注意到当你用反斜杠打印一串字符串时,它会打印一个双反斜杠:

>>> print((r'C:\hi', 'C:\\there'))
('C:\\hi', 'C:\\there')

为什么打印元组时它的行为会有所不同?

(注意,这在Python 2和3以及Windows和Linux中都会发生。)

1 个答案:

答案 0 :(得分:4)

当您打印元组(或列表或许多其他类型的项目)时,representation (repr()) of the contained items is printed而不是字符串值。对于更简单的类型,表示通常是您必须键入Python以获取值的方式。这使您可以更容易地区分容器中的项目与分隔它们的标点符号,还可以识别它们的类型。 (想一想:(1, 2, 3)是三个整数的元组,还是字符串"1, 2"和整数3的元组 - 或其他一些值的组合?)

要查看任何字符串的repr()

print(repr(r'C:\hi'))

在交互式Python提示符下,只需指定任何值(或变量或表达式)即可打印其repr()

要将元组的内容打印为常规字符串,请尝试以下操作:

items = (r'C:\hi', 'C:\\there')
print(*items, sep=", ")

str.join()也很有用,特别是当你不打印而是构建一个字符串时,你将在以后用它来做其他事情:

text = ", ".join(items)

但是,项目必须已经是字符串(join需要这个)。如果他们不是所有字符串,您可以这样做:

text = ", ".join(map(str, items))