我得到了一个带有纯文本和一些unicode文字表示的文件,例如
STRING_LITERAL2 = '"' ( ([^\x22\x5C\xA\xD]) | '\' [tbnrf\"'] )* '"'
我需要将这些表示解释为真正的文字并在正则表达式中使用它们。问题是,如果我简单地阅读它们,我会得到
str_lit2 = ('\'"\' ( ([^\\x22\\x5C\\xA\\xD]) | \'\\\' [tbnrf\\"\'] )* \'"\''
并且python的import.re
包无法解释这些文字。
我可以使用re.sub("\\\\x",...)
找到具体的表示形式,但如果我想替换它们re.sub("\\\\x","\\x".encode().decode('unicode_escape'), str_lit2)
- 说这些是真正的文字 - 我会收到以下错误:
UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape
那么如何将这些unicode文字的字符串代表转换为真正的文字呢?当然只适用于python3,因为我需要使用它。
问候 Meldamos
答案 0 :(得分:0)
您包含的所有十六进制字符都属于US_ASCII平面,因为它们都没有设置最高有效位。例如,\x22
等同于Unicode / ASCII引用"
。同样地,\5c
等同于Unicode / ASCII \
。
如果没有您的进一步澄清,我认为您过度引用了正常的ASCII码点。