【发布时间】:2019-07-18 21:31:41
【问题描述】:
我有一段代码,其中包含用十进制编写的 UTF-8 转义序列的字符串,例如
my_string = "Hello\035"
这应该被解释为
Hello#
我不介意解析十进制值,到目前为止,我已经对整个字符串使用了这样的东西,这似乎效果最好(没有错误并且做了一些事情):
print(codecs.escape_decode(my_string)[0].decode("utf-8"))
但是编号似乎很不正确,因为我必须使用 \043 转义序列才能正确解码 hastag (#),并且所有其他字符都是相同的。
【问题讨论】:
-
这些转义序列从何而来?发件人可能不知道 Python 将字符串中的反斜杠和三位数字解释为 octal 值,而不是十进制值。也许如果你消除了这个困惑,那么他们会很乐意使用 043(它是 35 的八进制形式)来表示一个哈希标签。
-
这是一个学校项目,我们必须能够处理这样的输入:\xyz,范围是从000到999,但它是十进制,而不是八进制
-
@Sandeep 是的,我知道这一点,但我得到了十进制的转义序列,因为这是一个学校项目,即使我想要,我也无法将输入更改为更合理的值到
-
@Sandeep:OP 知道我的想法。问题是当它用十进制写时如何处理。
-
... 如果是 input 值,情况就不同了。在这种情况下,您可以获得单个字符,并且可以解析该输入。
标签: python unicode utf-8 unicode-escapes