小编典典

用一个空格替换非 ASCII 字符

all

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

阅读 81

收藏
2022-04-22

共1个答案

小编典典

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

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

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

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

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

注意+那里。

2022-04-22