在Python中消除一系列.replace()调用

时间:2015-01-06 08:29:20

标签: python string syntax code-cleanup

我正在开发一个涉及解析文本页面的项目。我编写了以下函数来从单词中删除某些标点符号并将其转换为小写:

def format_word(word):
    return word.replace('.', '').replace(',', '').replace('\"', '').lower()

有没有办法将所有对.replace()的调用合并为一个?这看起来很丑陋!我能想到的唯一方法是:

def format_word(word):
    for punct in '.,\"':
        word.replace(punct, '')
    return word.lower()

4 个答案:

答案 0 :(得分:8)

如果要删除字符,可以使用str.translate

在python 2.x中:

>>> 'Hello, "world".'.translate(None, ',."')
'Hello world'

在python 3.x中:

>>> 'Hello, "world".'.translate(dict.fromkeys(map(ord, ',."')))
'Hello world'

答案 1 :(得分:4)

您可以使用re module作为

import re
>>> def format_word(word):
...     return re.sub(r'[,."]', "", word)
...
>>> print format_word('asdf.,"asdf')
asdfsdf

答案 2 :(得分:0)

你很亲密。如果您不仅要致电.replace(),还要使用其结果,那么您就完成了:

def format_word(word):
    for punct in '.,\"':
        word = word.replace(punct, '')
    return word.lower()

答案 3 :(得分:0)

您可以使用正则表达式执行此操作:

re.sub("[.,\"]", "", "\"wo,rd.")