删除不可打印的单词

2024-10-01 22:39:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python字典中存储文本中单词的频率。我对文本应用了一些规范化以删除重音符号、符号、标点符号等,但在所有这些之后,文本仍然包含一些单词,如果打印出来,会引发UnicodeEncodeError。例如“\xe2\x80\x9c”。我怎样才能摆脱这些字眼呢?在


Tags: 文本字典符号规范化单词频率xe2标点符号
1条回答
网友
1楼 · 发布于 2024-10-01 22:39:43

您可以使用regex模块(pip3 install regex)查找所有ASCII或非ASCII字母:

>>> import regex
>>> s='España'
>>> s
'España'
>>> regex.findall(r'\p{ASCII}', s)
['E', 's', 'p', 'a', 'a']
>>> regex.findall(r'\P{ASCII}', s)
['ñ']

可以使用字符类或非字符类:

^{pr2}$

可以不使用任何音调符号进行规范化:

>>> import unicodedata
>>> ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
'Espana'

您可以对zalgo text使用相同的方法

>>> s2.encode('utf-8')
b'S\xcc\x83\xcc\x84\xcd\xa7\xcc\x92\xcd\x8c\xcd\x8c\xcd\x9b\xcc\x8c\xcd\x8f\xcc\xa8\xcd\xa1\xcd\x94\xcc\xae\xcd\x89\xcd\x9a\xcc\xb0\xcc\xa3o\xcc\xbf\xcc\x8a\xcd\xa8\xcd\xa7\xcc\xa1\xcc\xaf\xcc\xab\xcc\xa9\xcc\xb0\xcd\x85\xcc\x96m\xcc\x8b\xcc\x87\xcc\x8c\xcd\xaa\xcd\xa1\xcd\x8f\xcc\xa6\xcc\xb0\xcd\x99\xcc\xa0\xcc\xa9\xcc\xa6\xcd\x88e\xcc\x82\xcc\x85\xcd\x8b\xcd\xa9\xcd\x8b\xcd\x8c\xcc\xa5\xcd\x9a\xcc\xba\xcc\xac \xcc\x94\xcd\xaa\xcd\x9f\xcc\xb6\xcc\xb8\xcc\xaa\xcc\xae\xcc\xb9z\xcc\x83\xcd\xa6\xcd\xa9\xcc\xb7\xcd\x98\xcc\x9d\xcc\x98\xcc\xa9\xcd\x9a\xcd\x9a\xcc\xac\xcc\x99a\xcc\x80\xcc\x88\xcc\x88\xcd\xa2\xcc\xb4\xcc\x98\xcc\xbb\xcc\xa6\xcc\xb2\xcc\x99l\xcc\x87\xcd\x82\xcc\x89\xcc\x86\xcc\x88\xcc\x94\xcc\x8d\xcc\xb7\xcc\xb6\xcd\xa1\xcc\xb3\xcc\xa5\xcc\x96\xcc\x9c\xcc\xae\xcc\xba\xcd\x99\xcc\x9dg\xcc\x8f\xcd\xa3\xcd\xad\xcc\x8c\xcd\x8b\xcc\x91\xcd\x83\xcc\x8f\xcc\xb0\xcd\x88o\xcd\xab\xcc\x90\xcd\xa4\xcd\x90\xcd\x84\xcd\xa3\xcd\x90\xcd\x9e\xcc\xa9\xcd\x96\xcd\x8e\xcc\xb9\xcc\xab\xcc\x96\xcc\xb9 \xcc\x87\xcc\xbf\xcc\x9b\xcc\x98\xcc\x97\xcd\x96\xcc\xae\xcc\x97t\xcd\xa6\xcc\xa0\xcc\x9f\xcc\xae\xcc\xb1\xcc\xb9\xcc\x9d\xcc\x9c\xcc\xade\xcd\x97\xcd\x83\xcc\xbe\xcd\xae\xcd\x8c\xcd\x84\xcc\xa7\xcc\xaa\xcc\x9d\xcc\xa6\xcc\xaa\xcc\xb1x\xcc\x84\xcc\x81\xcc\x8d\xcd\xa5\xcd\xad\xcd\xa9\xcd\x98\xcc\xa8\xcc\x9e\xcd\x9a\xcd\x93t\xcd\xac\xcc\x8b\xcc\x82\xcc\x87\xcc\xb4\xcd\x87\xcc\xb2\xcc\xab\xcd\x8e\xcd\x8d\xcc\xb9\xcd\x88'

>

̃̃ͧͧͧ͌͌͌ͯͭͭͭͭͭ͡͡o只要̫ͧͧͧͧͨͧͧͭͭͭ的ͭͭ的; m ;̉的̉Nͪͪͭͭͭ另一条̸̸̸如何̩̩̩如何̩̩怎样的̸̸ͩ͌如何ͪ͟z̷̝如何ͯ如何͚如何的ͩ818;∗ͩ͢的ͯ∓∓的ͯͯͭͭͭ̔N͡g的W的N N N的N N N N N N N N N N N N N N N N̹̝̝̝̗̗ͫ̐ͤ͐́̚͞͞791;̗̗的̿查询̝̜̜̭ͦȩ更快的̝如何̝如何̓̓ͮ͌769;的́; x̨ͮͮͮ≔ͮ的ͮ如何ͮW W 7ͩ͘t̴͇̲̫͎͍̹͈ͬ̋̇

一。在

>>> ''.join(regex.findall(r'\p{ASCII}', s2))
'Some zalgo text'
>>> ''.join((c for c in unicodedata.normalize('NFD', s2) if unicodedata.category(c) != 'Mn'))
'Some zalgo text'

相关问题 更多 >

    热门问题