import re, string, timeit
s =
"string. With. Punctuation"
exclude = set(string.punctuation)
table = string.maketrans(
""
,
""
)
regex = re.compile(
'[%s]'
% re.escape(string.punctuation))
def test_set(s):
return
''
.join(ch
for
ch in s
if
ch not in exclude)
def test_re(s):
return
regex.sub(
''
, s)
def test_trans(s):
return
s.translate(table, string.punctuation)
def test_repl(s):
for
c in string.punctuation:
s=s.replace(c,
""
)
return
s
print
"sets :"
,timeit.Timer(
'f(s)'
,
'from __main__ import s,test_set as f'
).timeit(1000000)
print
"regex :"
,timeit.Timer(
'f(s)'
,
'from __main__ import s,test_re as f'
).timeit(1000000)
print
"translate :"
,timeit.Timer(
'f(s)'
,
'from __main__ import s,test_trans as f'
).timeit(1000000)
print
"replace :"
,timeit.Timer(
'f(s)'
,
'from __main__ import s,test_repl as f'
).timeit(1000000)
out_put:
# sets : 19.8566138744
# regex : 6.86155414581
# translate : 2.12455511093
# replace : 28.4436721802