我需要用空格替换所有非 ASCII (\x00-\x7F) 字符。令我惊讶的是,这在 Python 中并不简单,除非我遗漏了什么。以下函数只是删除所有非 ASCII 字符:
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)
如何用一个空格替换所有非 ASCII 字符?
在 无数 类似 的 SO 问题 中, 没有 解决 字符 替换 而 不是 剥离 问题, 并且 还解决 了 所有非 ascii 字符而不是特定字符。
原文由 dotancohen 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的
''.join()
表达式正在 _过滤_,删除任何非 ASCII 的内容;您可以改用条件表达式:这会一个一个地处理字符,并且每个替换的字符仍会使用一个空格。
您的正则表达式应该只用空格替换 连续 的非 ASCII 字符:
注意那里的
+
。