用于查找唯一元素的代码由于字符编码不同而产生重复元素

时间:2019-06-04 00:24:42

标签: python list character-encoding unique text-comparison

我有一个包含重复名称列表的文本文件(其中一些具有重音字母,例如é,à,î等)

例如名单:普雷西利亚,玛姬,普雷西利亚

我需要编写代码,以提供唯一名称的输出。

但是,我的文本文件在两次出现的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

更新:原始文件非常大。我需要一种将这两种情况都视为一个事件的方法。

1 个答案:

答案 0 :(得分:1)

因此,我的老板建议我们使用Unicode规范化,该规范代替等效的字符序列,以便将等效的任何两个文本简化为相同的代码点序列,称为规范化形式或原始文本的规范形式。

可以在https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.htmlhttps://github.com/aws/aws-cli/issues/1639上找到更多详细信息

截至目前,我们在测试用例上获得了积极的结果,希望我们的主要数据集也能与此配合使用。