用Python替换英文字母之外的任何字符?

时间:2012-10-25 01:15:08

标签: python regex

如何更换英文字母以外的任何字符?

例如,'abcdükl* m'替换为''将'abcd kl m'

4 个答案:

答案 0 :(得分:4)

使用正则表达式[^a-zA-Z]

re.sub(r'[^a-zA-Z]', '', mystring)

一些信息:a-zA-Z是分别表示所有小写和大写字母的字符范围,字符类开头的插入符号^表示否定,例如: “除了这些之外的任何东西”。

答案 1 :(得分:2)

假设您正在尝试规范化文字,请参阅“Comprehensive character replacement module in python for non-unicode and non-ascii for 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字符,那么其他人提到的否定字符集正则表达式就是这样做的。

答案 2 :(得分:1)

搜索[^a-zA-Z]并替换为''

答案 3 :(得分:1)

>>> import string
>>> print ''.join(x if x in string.ascii_letters else ' ' for x in u'abcdükl*m') 
abcd kl m