所以目前我正在尝试找出特定单词在页面上出现的次数。
我的Python代码有这个:
print(len(re.findall(secondAnswer, page)))
block 引用> block 引用>0
经过仔分割析,我注意到 print(secondAnswer) 给了我一个不同的答案“太平洋”
来自 print(ascii(secondAnswer)) 'Paci\ufb01c'
我有一种感觉,len(re.findall(secondAnswer, page)) 中的 secondaryAnswer 值正在使用“Paci\ufb01c”,因此在页面上找不到任何匹配项。
有人可以给我一些关于如何解决这个问题的提示吗?
谢谢,尼克
最佳答案
Unicode 字符 fb01
是 fi ligature 。也就是说,就 Python 而言,它是单个字符,但在显示时显示为两个(并列的)字符。
要将连字分解为单独的字符,您可以使用 unicodedata.normalize
。例如:
page = unicodedata.normalize("NFKD", page)
或者在这种特定情况下,您可以编写正则表达式来接受连字作为 fi
字符序列的替代,例如通过使用非捕获组的交替:paci (?:fi|fi)c
.
关于python - 从Python中的字符串中去除不可打印的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47564464/