我需要将所有非ASCII(\ x00- \ x7F)字符替换为一个空格。令我惊讶的是,这在Python中并不是一件容易的事,除非我丢失了某些东西。以下功能仅删除所有非ASCII字符:
ASCII(\ x00- \ x7F)
def remove_non_ascii_1(text): return ''.join(i for i in text if ord(i)<128)
并且该字符将非ASCII字符替换为根据字符代码点中字节数量的空格数量(即,–字符替换为3个空格):
def remove_non_ascii_2(text): return re.sub(r'[^\x00-\x7F]',' ', text)
你的''.join()表达式正在过滤,删除任何非ASCII的内容;你可以改用条件表达式:
''.join()
return ''.join([i if ord(i) < 128 else ' ' for i in text])
这将一个接一个地处理字符,每个替换字符仍将使用一个空格。
你的正则表达式应仅将连续的非ASCII字符替换为空格:
re.sub(r'[^\x00-\x7F]+',' ', text)
注意+那里。
+