我使用以下函数去掉非ascii字符
def removeNonAscii(s):
return "".join(filter(lambda x: ord(x)<128, s))
def removeNonAscii1(s):
return "".join(i for i in s if ord(i)<128)
如果它包含任何非ascii字符,我现在想删除整个单词。我想过测量前后功能应用的长度,但我相信有一种更有效的方法。有什么想法吗?
答案 0 :(得分:1)
如果您根据空格定义单词,这样的内容可能会起作用:
Listen 82
请注意,这会将重复的空格折叠到一个空格中。
答案 1 :(得分:0)
最干净(但不一定最有效)的方法是将单词转换为二进制,尝试将其解码为ASCII。如果尝试失败,则该单词具有非ASCII字符:
def is_ascii(w):
try:
w.encode().decode("us-ascii")
return True
except UnicodeEncodeError:
return False
答案 2 :(得分:0)
我想出了以下功能。我删除了包含任何ASCII字符的所有单词,但可能会根据需要扩展范围。
def removeWordsWithASCII(s):
" ".join(filter(lambda x: not re.search(r'[\x20-\x7E]', x), s.split(' ')))