为什么打印 returns \\,而不是 Python 中的转义字符 \
Why print returns \\, not a escape character \ in Python
下面的代码打印出这样的表情符号:
print('\U0001F602')
print('{}'.format('\U0001F602'))
但是,如果我像下面这样使用 \
,它会打印 \U0001F602
print('\{}'.format('U0001F602'))
为什么 print('\{}'.format())
返回 \
,而不是 escape 字符,即 \
?
我一直在检查 this 并在 Google 中搜索,但找不到正确的答案。
>>> print('\{}'.format('U0001F602'))
\U0001F602
这是因为您将 {} 作为 .format 函数的参数,它只填充花括号内的值。
而且它打印的是单张\而不是双张\
参考String and Bytes literals,当python在编译程序时看到字符串文字中的反斜杠时,它会查看下一个字符以查看如何转义后面的字符。在第一种情况下,后面的字符是 U
所以 python 知道它是一个 unicode 转义字符。在最后一种情况下,它看到 {
,意识到没有转义,只发出反斜杠和 {
字符。
在 print('\{}'.format('U0001F602'))
中有两个不同的字符串文字 '\{}'
和 'U0001F602'
。第一个字符串将在运行时使用 .format
进行解析,这根本不会使结果成为字符串文字 - 它是一个复合值。
下面的代码打印出这样的表情符号:
print('\U0001F602')
print('{}'.format('\U0001F602'))
但是,如果我像下面这样使用 \
,它会打印 \U0001F602
print('\{}'.format('U0001F602'))
为什么 print('\{}'.format())
返回 \
,而不是 escape 字符,即 \
?
我一直在检查 this 并在 Google 中搜索,但找不到正确的答案。
>>> print('\{}'.format('U0001F602'))
\U0001F602
这是因为您将 {} 作为 .format 函数的参数,它只填充花括号内的值。
而且它打印的是单张\而不是双张\
参考String and Bytes literals,当python在编译程序时看到字符串文字中的反斜杠时,它会查看下一个字符以查看如何转义后面的字符。在第一种情况下,后面的字符是 U
所以 python 知道它是一个 unicode 转义字符。在最后一种情况下,它看到 {
,意识到没有转义,只发出反斜杠和 {
字符。
在 print('\{}'.format('U0001F602'))
中有两个不同的字符串文字 '\{}'
和 'U0001F602'
。第一个字符串将在运行时使用 .format
进行解析,这根本不会使结果成为字符串文字 - 它是一个复合值。