如何更换英文字母以外的任何字符?
例如,'abcdükl* m'替换为''将'abcd kl m'
答案 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