python - 为什么在 Python 中打印元组(列表、字典等)会加倍反斜杠?

标签 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 中都会发生。)

最佳答案

当您打印元组(或列表,或许多其他类型的项目)时,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 - 为什么在 Python 中打印元组(列表、字典等)会加倍反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245234/

相关文章:

python - Django pytest 断言错误 : should return body unicode

python - 需要使用 pip36 命令调用 pip

html - 不检查 “Print background colors and images”在IE中打印背景图片和颜色

python - 在Python中用正则表达式替换html脚本元素源

javascript - 在 JavaScript 中取消转义 HTML 实体?

python - 在同一个方法中使用两个父方法

python - 如何将 Python 变量传递给 XPath 表达式?

python - 如何在 Python 中打印带下划线的内容?

php - 如何在 PHP 帮助下打印文件

escaping - 用 gettext 打印 "