2024-10-04 07:26:00 发布
网友
我使用以下函数来去除非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字符。我想在函数前后测量长度,但我相信有一种更有效的方法。有什么想法吗?在
如果基于空格定义单词,则可以使用以下方法:
def containsNonAscii(s): return any(ord(i)>127 for i in s) words = sentence.split() cleaned_words = [word for word in words if not containsNonAscii(word)] cleaned_sentence = ' '.join(cleaned_words)
请注意,这将把重复的空白压缩成一个空格。在
我想出了以下函数。我删除包含任何ASCII字符的所有单词,但范围可能会根据需要进行扩展。在
def removeWordsWithASCII(s): " ".join(filter(lambda x: not re.search(r'[\x20-\x7E]', x), s.split(' ')))
最干净(但不一定是最有效的)方法是将一个字转换成二进制,并尝试将其解码为ASCII。如果尝试失败,则单词包含非ASCII字符:
def is_ascii(w): try: w.encode().decode("us-ascii") return True except UnicodeEncodeError: return False
如果基于空格定义单词,则可以使用以下方法:
请注意,这将把重复的空白压缩成一个空格。在
我想出了以下函数。我删除包含任何ASCII字符的所有单词,但范围可能会根据需要进行扩展。在
最干净(但不一定是最有效的)方法是将一个字转换成二进制,并尝试将其解码为ASCII。如果尝试失败,则单词包含非ASCII字符:
相关问题 更多 >
编程相关推荐