如何删除字符串中的所有标点符号? (蟒蛇)

时间:2013-04-17 03:29:58

标签: python

例如:

asking="hello! what's your name?"

我可以这样做吗?

asking.strip("!'?")

4 个答案:

答案 0 :(得分:17)

一个非常简单的实现是:

out = "".join(c for c in asking if c not in ('!','.',':'))

并继续添加任何其他类型的标点符号。

更有效的方法是

import string
stringIn = "string.with.punctuation!"
out = stringIn.translate(stringIn.maketrans("",""), string.punctuation)

编辑:这里有关于效率和其他实现的更多讨论: Best way to strip punctuation from a string in Python

答案 1 :(得分:13)

import string

asking = "".join(l for l in asking if l not in string.punctuation)

使用string.punctuation进行过滤。

答案 2 :(得分:0)

这样可行,但可能有更好的解决方案。

asking="hello! what's your name?"
asking = ''.join([c for c in asking if c not in ('!', '?')])
print asking

答案 3 :(得分:0)

Strip不起作用。它只删除前导和尾随实例,而不是之间的所有内容:http://docs.python.org/2/library/stdtypes.html#str.strip

玩过滤器:

import string
asking = "hello! what's your name?"
predicate = lambda x:x not in string.punctuation
filter(predicate, asking)