从 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
.
所以目前我正在尝试找出特定单词在页面上出现的次数。
我的 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
.