我有一段代码,其中包含用十进制编写的UTF-8转义序列的字符串,例如
my_string = "Hello\035"
应该解释为
Hello#
我不介意解析十进制值,到目前为止,我已经对整个字符串使用了这样的方法,而且这似乎是最有效的(没有错误,并且做了一些事情):
print(codecs.escape_decode(my_string)[0].decode("utf-8"))
但是编号似乎有点不对劲,因为我必须使用\043转义序列才能正确解码hastag(#),其他所有字符都是一样的。你知道吗
Tags:
您无法明确地检测和替换字符串文字中的所有
\ooo
转义序列,因为在第一行代码运行之前,这些转义序列将被相应的字符值无可挽回地替换。就Python而言,"foo\041"
和"foo!"
是100%相同的,无法确定前一个对象是用转义序列定义的,而后者不是如果您在输入数据的形式方面有一定的灵活性,那么您仍然可以做您想要做的事情。例如,如果允许使用原始字符串而不是常规字符串,则在运行时之前
r"Hello\035"
不会被解释为“Hello,后跟hash标记”。它将被解释为“Hello,后跟反斜杠,后跟0 3和5”。由于数字字符仍然可以访问,因此可以在代码中对其进行操作。例如结果:
另外,如果您通过
input()
获取输入字符串,这种方法也可以工作,因为用户在该提示符中键入的反斜杠不会被解释为转义序列。如果执行print(replace_decimal_escapes(input()))
,并且用户键入“Hello\035”,那么输出将是所需的“Hello#”。你知道吗相关问题 更多 >
编程相关推荐