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

新手上路,请多包涵

我正在编写一个 python MapReduce 字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章 Stripping everything but alphanumeric chars from a string in 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 正确检索没有任何非字母数字字符的新行。

建议?

原文由 KDecker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 301
2 个回答

使用 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.

原文由 limasxgoesto0 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 Tad 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题