0

如何替换英文字母表之外的任何字符?

例如,用 ' ' 替换的 'abcdükl*m' 将是 'abcd kl m'

4

4 回答 4

6

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

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

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

于 2012-10-25T01:17:28.283 回答
2

假设您正在尝试规范化文本,请参阅“ 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 字符,那么其他人提到的否定字符集正则表达式就是这样做的方法。

于 2012-10-25T01:21:57.080 回答
1

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

于 2012-10-25T01:16:38.983 回答
1
>>> import string
>>> print ''.join(x if x in string.ascii_letters else ' ' for x in u'abcdükl*m') 
abcd kl m
于 2012-10-25T01:23:01.303 回答