【问题标题】:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 1-2: truncated \uXXXX escape [duplicate]SyntaxError:(unicode错误)'unicodeescape'编解码器无法解码位置1-2中的字节:截断\uXXXX转义[重复]
【发布时间】:2017-10-30 08:17:06
【问题描述】:

我对 Python 甚至编程以及这个论坛都是全新的。所以我只是在测试一些我用 Python 学到的新东西,比如打印语句,但我得到了这个错误:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 1-2: truncated \uXXXX escape

基本上我只是写了这段代码:

print('C\users\desktop')

那么那里发生了什么??

【问题讨论】:

  • 你使用的是 Python 2 还是 Python 3?
  • 使用 \\ 而不是 \ 作为语法 \uXXXX 定义一个 unicode 转义码,而 \\ 转义转义码并让您可以正常使用它。
  • 尝试写print('C\\users\\desktop')。使用双斜杠。
  • 使用原始字符串前缀r"C:\users\desktop"
  • @thaeslocrauo:你的 python 版本是什么?这很重要。

标签: python unicode


【解决方案1】:

正如错误消息所示,\u 被解释为转义。在 Python 3 中,您可以通过使用原始字符串来避免这种情况:

>>> print(r'C\users\desktop')
C\users\desktop

不幸的是,在 Python 2 中,\u 转义仍然在原始(unicode)字符串中进行解释,因此您必须执行其他操作。一种可能性是使用字节串(即,不是 unicode)。一种可能性是做'C\\users\\desktop'。另一个是做类似'C\\' r'users\desktop' 的事情(通过并置使用字符串连接)。我自己在使用 Python 2 时遇到过这个问题,而且就个人而言,由于 99% 的问题出在 Windows 上的 Users 目录上,我只是将 created a directory junction 别名为 C:\TheUsers 到 C:\Users。然后我可以毫无问题地做r"C:\TheUsers"。

【讨论】:

  • 在 python 2 中,它可以工作(\u 没什么特别的)。OP 可能正在使用 python 3。>>> "c:\users" => 'c:\\users'。在这里使用 python 2.7.12。
  • @Jean-FrançoisFabre: \u 确实是 Python 2 中公认的转义。请参阅 the docs。
  • 好的,那就不行了。您是否测试过我上面的示例?我确信人们有在 python 2 中使用 \U 并在 python 3 中中断的代码。它在文档中,但它不起作用。
  • @Jean-FrançoisFabre:我不知道你在说什么。 Unicode 转义符在 Python 2 中运行良好。事实上它们运行得很好,因为在这个问题中描述的情况下,没有办法关闭它们。
  • 你似乎对此有一些不好的经历,所以我相信你,但在我的 windows box python 2.7.12 上它只是没有效果,比如\c。你用的是哪个版本?也许他们“修复”了较新的 2.7 版本
猜你喜欢
  • 2023-03-05
  • 2016-09-20
  • 2022-11-02
  • 2021-03-05
  • 2016-11-03
  • 2021-05-17
  • 2020-01-06
  • 1970-01-01
相关资源
最近更新 更多