0

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

例如列表:Précilia、Maggie、Précilia

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

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

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

4

1 回答 1

2

所以我的老板建议我们使用 Unicode 规范化来替换等价的字符序列,这样任何两个等价的文本都会被简化为相同的代码点序列,称为原始文本的规范化形式或范式。

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

到目前为止,我们的测试用例得到了积极的结果,希望我们的主要数据集也能适用于此。

于 2019-06-04T23:10:44.520 回答