繁体   English   中英

如何使用python 3将Unicode文字的字符串表示形式从文件转换为真正的Unicode文字?

[英]How to convert a string representation of unicode literals from a file, into real unicode literals using python 3?

我得到了一个带有纯文本和一些Unicode文字表示形式的文件,例如

STRING_LITERAL2 = '"' ( ([^\x22\x5C\xA\xD]) | '\' [tbnrf\"'] )* '"'

我需要将这些表示形式解释为真实的文字,并在正则表达式中使用它们。 问题是,如果我简单地阅读它们,就会明白

str_lit2 = ('\'"\' ( ([^\\x22\\x5C\\xA\\xD]) | \'\\\' [tbnrf\\"\'] )* \'"\''

python的import.re包无法解释这些文字。

我可以使用re.sub("\\\\\\\\x",...)找到特定的表示形式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,因为我需要使用它。

梅尔达莫斯的问候

您包含的所有十六进制字符全部落入US_ASCII平面,因为它们均未设置最高有效位。 例如, \\x22等效于Unicode / ASCII引号" 。类似地, \\5c等效于Unicode / ASCII \\

如果您没有进一步的说明,我认为您正在过度引用正常的ASCII码点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM