提问人:Markus 提问时间:2/13/2023 最后编辑:mkrieger1Markus 更新时间:2/13/2023 访问量:64
将 UTF-8 文本中的非 UTF-8 ASCII 文本转换为各自的字符
Convert non UTF-8 ASCII literals in otherwise UTF-8 text to their respective character
问:
我有一个 UTF8 编码的文本,该文本已被破坏并包含一些“cp1252”ASCII 文本。 我正在尝试隔离文字并逐个转换它们,但是以下代码不起作用,我不明白为什么......
text = "This text contains some ASCII literal codes like \x9a and \x9e."
# Find all ASCII literal codes in the text
codes = re.findall(r'\\x[0-9a-fA-F]{2}', text)
# Replace each ASCII literal code with its decoded character
for code in codes:
char = bytes(code, 'ascii').decode('cp1252')
text = text.replace(code, char)
print(text)
答:
3赞
Mark Tolonen
2/13/2023
#1
无需正则表达式。编码将 1:1 从 Unicode 码位 U+0000 转换为 U+00FF 到字节。然后正确解码:latin1
b'\x00'
b'\xff'
>>> text = "This text contains some ASCII literal codes like \x9a and \x9e."
>>> text.encode('latin1').decode('cp1252')
'This text contains some ASCII literal codes like š and ž.'
该文本可能首先被解码为(拉丁语-1的另一个名称)。理想情况下,将要解码的代码固定为 .ISO-8859-1
cp1252
评论
text
不包含 4 个字符的序列 , , , ;它包含单个 Unicode 字符 U+009A。\
x
9
a