为什么在 Python 中打印元组会加倍反斜杠?
Why does printing a tuple in Python double the backslashes?
在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 中都会发生。)
当您打印元组(或列表,或许多其他类型的项目)时,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))
在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 中都会发生。)
当您打印元组(或列表,或许多其他类型的项目)时,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))