当前位置:  开发笔记 > 编程语言 > 正文

Python,从字符串中删除所有非字母字符

如何解决《Python,从字符串中删除所有非字母字符》经验,为你挑选了4个好方法。

我正在编写一个python MapReduce字数统计程序.问题是数据中散布着许多非字母字符,我发现这篇文章从Python中的字符串中删除除字母数字字符之外的所有字符,这显示了使用正则表达式的一个很好的解决方案,但我不知道如何实现它

def mapfn(k, v):
    print v
    import re, string 
    pattern = re.compile('[\W_]+')
    v = pattern.match(v)
    print v
    for w in v.split():
        yield w, 1

我担心我不确定如何使用库re甚至正则表达式.我不确定如何正确地将正则表达式模式应用于传入的字符串(书的行)v以检索没有任何非字母数字字符的新行.

建议?



1> limasxgoesto..:

使用 re.sub

import re

regex = re.compile('[^a-zA-Z]')
#First parameter is the replacement, second parameter is your input string
regex.sub('', 'ab3d*E')
#Out: 'abdE'

或者,如果您只想删除某组字符(因为撇号在您的输入中可能没问题......)

regex = re.compile('[,\.!?]') #etc.



2> Tad..:

如果您不想使用正则表达式,您可以尝试

''.join([i for i in s if i.isalpha()])



3> Kevin..:

您可以使用re.sub()函数删除这些字符:

>>> import re
>>> re.sub("[^a-zA-Z]+", "", "ABC12abc345def")
'ABCabcdef'

re.sub(MATCH PATTERN,REPLACE STRING,STRING TO SEARCH)

"[^a-zA-Z]+" - 寻找不是a-zA-z的任何字符组.

"" - 用""替换匹配的字符



4> Don..:

尝试:

s = filter(str.isalnum, s)

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有