如何比较具有不同unicode的两个字符串?

时间:2019-07-26 12:16:11

标签: python-3.x

当我进行字符串比较时,即使两个字符串相等,我也会发现它们不相等。

我正在从2个PDF中提取文本。提取的文本是相同的。但是我可以看到其中一种字体发生了变化。我不明白为什么?

str1 ='确认'

str2 ='确认'

str1 == str2

错误

2 个答案:

答案 0 :(得分:0)

问题在于,第一种情况下字符串中的“ fi”是连字(https://en.wikipedia.org/wiki/Typographic_ligature),而第二种情况下是“ f”和“ i”的总和。

您可以使用函数来检查是否存在连字并用纯文本替换

def ligature(string):
    if 'fi' in string:
        string.replace('fi', 'fi')
    return string

如果您在文本中发现了更多连字,也可以添加其他if条语句。

答案 1 :(得分:0)

使用difflib库,您可以看到要比较的字符串之间存在明显的差异。要自己检查,可以尝试以下说明:

>>> import difflib
>>> str2 = 'Confirmations'
>>> str1 = 'Confirmations'
>>> print('\n'.join(difflib.ndiff([str1], [str2])))

得出

- Confirmations
?    ^

+ Confirmations
?    ^^

>>>