Python-用单个空格替换非ASCII字符

发布于 2021-02-02 23:09:51

我需要将所有非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)
关注者
0
被浏览
79
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

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

    这将一个接一个地处理字符,每个替换字符仍将使用一个空格。

    你的正则表达式应仅将连续的非ASCII字符替换为空格:

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

    注意+那里。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看