我需要用空格替换所有非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字符?
是的。
对于您,我建议您使用最相似的原始字符串表示法the unidecode module:
然后可以在字符串中使用它:
对于字符处理,请使用Unicode字符串:
但请注意,如果字符串包含已分解的Unicode字符(例如,单独的字符和组合的重音符号),则仍有问题:
您的
''.join()
表达式是过滤,删除任何非ASCII;您可以使用条件表达式代替:这将逐个处理字符,并且每个替换的字符仍将使用一个空格。
正则表达式应该用空格替换连续的非ASCII字符:
注意那里的
+
。相关问题 更多 >
编程相关推荐