我有一个包含重复名称列表的文本文件(其中一些具有重音字母,例如é,à,î等)
例如名单:普雷西利亚,玛姬,普雷西利亚
我需要编写代码,以提供唯一名称的输出。
但是,我的文本文件在两次出现的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)
预期产量:Prècilia,Maggie
实际和不正确的输出:Prècilia,Maggie和Prècilia
更新:原始文件非常大。我需要一种将这两种情况都视为一个事件的方法。
答案 0 :(得分:1)
因此,我的老板建议我们使用Unicode规范化,该规范代替等效的字符序列,以便将等效的任何两个文本简化为相同的代码点序列,称为规范化形式或原始文本的规范形式。
可以在https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.html和https://github.com/aws/aws-cli/issues/1639上找到更多详细信息
截至目前,我们在测试用例上获得了积极的结果,希望我们的主要数据集也能与此配合使用。