由于字符编码不同,用于查找唯一元素的代码会给出重复的元素



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

例如列表:普雷西莉亚、玛姬、普雷西莉亚

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

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

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

相关内容

  • 没有找到相关文章

最新更新