用单个空格替换非ASCII字符

问题:

我需要用空格替换所有非ASCII(\ x00- \ x7F)字符。我很惊讶,这在Python中并不是很容易,除非我缺少某些东西。以下函数只是删除所有非ASCII字符:

def remove_non_ascii_1(text):

    return ''.join(i for i in text if ord(i)<128)
&#91;/code&#93;
而且这个字符代替非ASCII字符与字符代码点中的字节数(即<code>–</code>字符替换为3个空格)的空格量):

def remove_non_ascii_2(text):

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

 如何用一个空格替换所有非ASCII字符?
 Of the myriad of similar SO questionsnone address character replacement as opposed to strippingand 另外寻址不是特定字符的所有非ASCII字符。

回答:

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

return ''.join([i if ord(i) < 128 else ' ' for i in text&#93;)
&#91;/code&#93;
这将逐个处理字符,并且仍将使用每个字符替换一个空格。
您的正则表达式应仅使用空格替换<em>consecutive</em>非ASCII字符:

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

请注意+

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Replace non-ASCII characters with a single space

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51 + = 58