在Python 2.x中去除特定标点符号
我正在使用Python 2.6,并且有一个字符串,其中包含一些我想去掉的标点符号。现在我查看了string.punctuation()
这个函数,但不幸的是,我想去掉所有的标点符号,除了句号和破折号。总共我只想去掉5个标点符号 - ()\"'
有什么建议吗?我希望这是最有效的方法。
谢谢
6 个回答
1
使用 string.translate 方法:
s = ''' abc(de)f\gh"i' '''
print(s.translate(None, r"()\"'"))
# abcdefghi
或者可以用 re.sub 方法:
import re
re.sub(r"[\\()'\"]",'',s)
不过,string.translate
看起来要快很多:
In [148]: %timeit (s*1000).translate(None, r"()\"'")
10000 loops, best of 3: 112 us per loop
In [146]: %timeit re.sub(r"[\\()'\"]",'',s*1000)
100 loops, best of 3: 2.11 ms per loop
1
>>> import re
>>> r = re.compile("[\(\)\\\\'\"]")
>>> r.sub("", "\"hello\" '(world)'\\\\\\")
'hello world'
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
1
你可以使用 str.translate(table[, deletechars])
这个方法,把 table
设置为 None
,这样就会把字符串中所有在 deletechars
里列出的字符都删除掉:
s.translate(None, r"()\"'")
下面是一些例子:
>>> "\"hello\" '(world)'".translate(None, r"()\"'")
'hello world'
>>> "a'b c\"d e(f g)h i\\j".translate(None, r"()\"'")
'ab cd ef gh ij'