python3:从一个带有.replace()长链的字符串中删除几个字符.replace()。replace()

时间:2010-06-02 14:40:13

标签: string methods python-3.x

我在堆栈溢出时发现了这个例子。我理解它,但对于这样一个简单的方法概念来说似乎有点太多了......从字符串中删除几个字符。

import string
exclude = set(string.punctuation)
s = ''.join(ch for ch in s if ch not in exclude)

在python 3.1中是否有一个内置字符串方法来执行以下操作:

s = "a,b,c,d,e,f,g,h,i"
s = s.strip([",", "d", "h"])

而不是:

s = s.replace(",", "").replace("d", "").replace("h", "")

1 个答案:

答案 0 :(得分:2)

我不同意你发现的例子过于复杂。对于您的用例,该代码将变为:

s = ''.join(ch for ch in s if ch not in ",dh")

这对我来说似乎很简洁。但是,有一种替代方案,它更简洁,可能更有效:

s = s.translate(str.maketrans("", "", ",dh"))

免责声明:我实际上没有测试过此代码,因为我无法访问Python 3.1解释器。 Python 2.6中的等价物(我已经测试过)是:

t = ''.join(chr(i) for i in range(256))
s = s.translate(t, ",dh")