从 python 中的字符串中剥离不可打印的字符?

Stripping non printable characters from a string in python?

所以目前我正在尝试找出特定单词在页面上出现的次数。

我的 Python 代码是这样的:

print(len(re.findall(secondAnswer, page)))

0

经过仔细分析,我注意到 print(secondAnswer) 给了我不同的答案 "Pacific"

来自打印(ascii(secondAnswer))'Paci\ufb01c'

我感觉我在 len(re.findall(secondAnswer, page)) 中的 secondAnswer 值正在使用 'Paci\ufb01c',因此在页面上找不到任何匹配项。

有人可以给我任何解决此问题的提示吗?

谢谢,尼克

Unicode 字符fb01 就是fi ligature。也就是说,就 Python 而言,它是一个字符,但在显示时显示为两个(并列)字符。

要将连字分解成单独的字符,您可以使用 unicodedata.normalize。例如:

page = unicodedata.normalize("NFKD", page)

或者在这种特定情况下,您可以编写正则表达式以接受连字作为 fi 字符序列的替代,例如通过使用非捕获组的替代:paci(?:fi|fi)c .