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

Eliminating series of .replace() calls in Python

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

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

有什么方法可以将对 .replace() 的所有调用合并为一个吗?这看起来相当丑陋!我能想到的唯一方法如下:

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

你很接近。如果您不仅调用 .replace(),而且还使用它的结果,您就完成了:

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

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

在python 2.x:

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

在python 3.x:

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

你可以使用 re module

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

您可以使用正则表达式来做到这一点:

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