似乎应该有一种比以下更简单的方法:

import string
s = "string. With. Punctuation?" # Sample string 
out = s.translate(string.maketrans("",""), string.punctuation)

有?


当前回答

在不太严格的情况下,单行线可能会有所帮助:

''.join([c for c in s if c.isalnum() or c.isspace()])

其他回答

不一定更简单,但如果你更熟悉re家族的话,就另辟蹊径。

import re, string
s = "string. With. Punctuation?" # Sample string 
out = re.sub('[%s]' % re.escape(string.punctuation), '', s)
myString.translate(None, string.punctuation)

为什么你们都不用这个?

 ''.join(filter(str.isalnum, s)) 

太慢了?

下面是Python 3.5的一行代码:

import string
"l*ots! o(f. p@u)n[c}t]u[a'ti\"on#$^?/".translate(str.maketrans({a:None for a in string.punctuation}))

在不太严格的情况下,单行线可能会有所帮助:

''.join([c for c in s if c.isalnum() or c.isspace()])