我有一个文本文件,其中包含重复名称的列表(其中一些具有重音字母,如é,à,î等(
例如列表:普雷西莉亚、玛姬、普雷西莉亚
我需要编写一个代码来提供唯一名称的输出。
但是,我的文本文件似乎对两次出现的 Précilia 中的两个重音 é 有不同的字符编码(我猜可能一个是 ASCII,另一个是 UTF-8(。因此,我的代码将 Précilia 的两种出现作为不同的独特元素。你可以在下面找到我的代码:
seen = set()
with open('./Desktop/input1.txt') as infile:
with open('./Desktop/output.txt', 'w') as outfile:
for line in infile:
if line not in seen:
outfile.write(line)
seen.add(line)
预期产出:普雷西莉亚、玛姬
实际和不正确的输出:普雷西莉亚、玛吉、普雷西莉亚
更新:原始文件是一个非常大的文件。我需要一种方法将这两个事件视为一个事件。
所以我的老板建议我们使用Unicode规范化来替换等效的字符序列,以便任何两个等效的文本将被简化为相同的码位序列,称为原始文本的规范化形式或正常形式。
有关更多详细信息,请参阅 https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.html 和 https://github.com/aws/aws-cli/issues/1639
截至目前,我们在测试用例上获得了积极的结果,希望我们的主要数据集也能与此一起使用。