gpt4 book ai didi

python - 看起来相同但编码不同的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:35 25 4
gpt4 key购买 nike

我有两个文件:file1.csv 和 file2.csv,每个文件的第一行也是唯一一行都写有名称“Aarão”。 file1.csv 是从 Google 电子表格的“导出为”生成的; file2.csv 是我使用 nano 手动创建的。两个文件都以 utf-8 编码:

file -I file1.csv 
file1.csv: text/plain; charset=utf-8

file -I file2.csv
file2.csv: text/plain; charset=utf-8

当我用 nano 打开它们时,它们看起来是一样的,但实际上是不同的:

>>> with io.open('file1.csv','r',encoding = 'utf8') as f1:
... for line in f1:
... word1 = line
...
>>> word1
u'Aara\u0303o\n'
>>>
>>> with io.open('file2.csv','r',encoding = 'utf8') as f2:
... for line in f2:
... word2 = line
...
>>> word2
u'Aar\xe3o\n'

那么,我该如何纠正这个问题,即将一个转换为另一个,以便我可以检查它们是否是同一个词? (在 python 中)

最佳答案

正如 deceze、Serge 和 Simon 所提到的,ã 字形可以用以下任一组合形式表示:单个代码点(ã 字符的代码点) ,或分解形式:两个代码点(a 的代码点后跟组合代字号的代码点)。

要在组合形式和分解形式之间进行转换,您可以使用 unicodedata 中的 normalize 函数模块。这是一个简短的 Python 2 演示。

import unicodedata as ud

s = u"Aarão"
print repr(s)

decomp = ud.normalize('NFD', s)
print repr(decomp)

comp = ud.normalize('NFC', decomp)
print repr(comp), comp == s

输出

u'Aar\xe3o'
u'Aara\u0303o'
u'Aar\xe3o' True

关于python - 看起来相同但编码不同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com