python - 用一个空格替换非 ASCII 字符

我需要用空格替换所有非 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 字符?

Of the myriad of similar SO questions , none address character replacement as opposed to stripping , and 另外解决所有非ASCII字符而不是特定字符。

最佳答案

你的 ''.join() 表达式是过滤,删除任何非ASCII;您可以改用条件表达式:

return ''.join([i if ord(i) < 128 else ' ' for i in text])

这会逐个处理字符,并且每个替换字符仍会使用一个空格。

您的正则表达式应该只用空格替换 连续 个非 ASCII 字符:

re.sub(r'[^\x00-\x7F]+',' ', text)

注意那里的+

https://stackoverflow.com/questions/20078816/

相关文章:

linux - 删除目录的符号链接(symbolic link)

python - 如何禁用 Pylint 警告?

linux - 如何计算文档中的行数?

python - 在 Python 中创建一个空列表

c - 为什么 C 预处理器将单词 "linux"解释为常量 "1"?

python - 如何从 Pandas 数据框中删除行列表?

python - pip 在哪里安装它的包?

linux - 如何在 Linux 上使用 grep 仅显示文件名?

linux - 如何将包含文件的文件夹复制到 Unix/Linux 中的另一个文件夹?

linux - 将多个 PDF 文件合并/转换为一个 PDF