【问题标题】:r'\U' gives SyntaxError: (unicode error) 'rawunicodeescape' codec can't decode bytes [duplicate]r'\U' 给出 SyntaxError: (unicode error) 'rawunicodeescape' codec can't decode bytes [重复]
【发布时间】:2018-03-29 02:11:30
【问题描述】:

我在 Python 2.7 中。

test = r'\U' 

给予:

SyntaxError: (unicode error) 'rawunicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX

我认为原始字符串应该忽略反斜杠。没有?

我想要一个实际包含 '\' 和 'U' 的字符串。

如果重要的话,我也在使用:

from __future__ import (absolute_import, division, print_function, unicode_literals)

【问题讨论】:

  • from __future__ import unicode_literals 是原因。
  • @StephenRauch 啊。为什么?
  • 如果我知道我会回答而不是投票。希望知道这些事情的人会路过并启发我们。
  • 很奇怪。当我删除 unicode_literals 导入时,这个问题就消失了。当然,我可以在 Python 3 中毫无问题地做到这一点。
  • 所以,还有 另一个 理由只使用 Python 3 ;)

标签: python python-2.7


【解决方案1】:

Python 2 原始 unicode 字符串有一个 bizarre quirk,它们仍然在其中处理 \u\U 序列:

当 'r' 或 'R' 前缀与 'u' 或 'U' 前缀一起使用时,将处理 \uXXXX 和 \UXXXXXXXX 转义序列,同时将所有其他反斜杠留在字符串中。

文档描述了组合 ru 前缀的行为,但我相信这也适用于组合 r 前缀和 unicode_literals

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2021-12-15
    • 1970-01-01
    • 2016-10-31
    • 2022-11-10
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多