如何替换英文字母表之外的任何字符?
例如,用 ' ' 替换的 'abcdükl*m' 将是 'abcd kl m'
使用正则表达式[^a-zA-Z]
:
re.sub(r'[^a-zA-Z]', '', mystring)
一些信息: 是a-zA-Z
分别表示所有小写和大写字母的字符范围,^
字符类开头的插入符号表示否定,例如“除这些之外的任何内容”。
假设您正在尝试规范化文本,请参阅“ python 中的非 unicode 和非 ascii 的 HTML 的综合字符替换模块”下的链接。
unicodedata
有一种normalize
可以优雅地为您降级文本的方法:
import unicodedata
def gracefully_degrade_to_ascii( text ):
return unicodedata.normalize('NFKD',text).encode('ascii','ignore')
完整文档 - http://docs.python.org/library/unicodedata.html
如果您只是尝试去除非 ASCII 字符,那么其他人提到的否定字符集正则表达式就是这样做的方法。
搜索[^a-zA-Z]
并替换为“”
>>> import string
>>> print ''.join(x if x in string.ascii_letters else ' ' for x in u'abcdükl*m')
abcd kl m