Python 3:是否需要使用unicode_escape编码?

时间:2018-11-18 15:04:41

标签: python python-3.x unicode python-unicode

This link列出了一些python特定的编码。

其中一种编码是“ unicode_escape”。

我只是想弄清楚,真的需要这种特殊编码吗?

>>> l = r'C:\Users\userx\toot'
>>> l
'C:\\Users\\userx\\toot'
>>> l.encode('unicode_escape').decode()
'C:\\\\Users\\\\userx\\\\toot'

如果您可以在上面看到,则'l'是一个Unicode对象,已经负责转义反斜杠。将其转换为“ unicode_escape”编码会再添加一组转义的反斜杠,这对我来说没有任何意义。

问题:

  1. 真的需要“ unicode_escape”编码吗?
  2. 为什么“ unicode_escape”在上面又添加了一组反斜杠?

1 个答案:

答案 0 :(得分:1)

引用the document you linked

  

适合作为ASCII编码的Python源代码中的Unicode文字内容的编码,但引号不会转义。从Latin-1源代码解码。请注意,默认情况下,Python源代码实际上使用UTF-8。

因此,print(l.encode('unicode_escape').decode())所做的事情几乎等同于 print(repr(l)),除了它不会在字符串的外部添加引号,而在字符串的内部不使用引号。

不使用print()时,REPL会使用默认的repr(),因此反斜杠转义了两次-与运行>>> repr(l)时完全相同。