从python上的字符串中删除所有数字

时间:2013-12-02 18:53:35

标签: python regex

所以我需要一些帮助来删除此字符串中的数字

import re

g="C0N4rtist"

re.sub(r'\W','',g)'

print(re.sub(r'\W','',g))

应该看起来像

CNrtist

但它给了我  04

我已经通过在线研究制作了此代码,并且我已经使用此网站http://docs.python.org/2/library/re.html寻求帮助。在我看来,代码应该工作,我不知道什么是错的,所以让我知道什么是错的将是非常有帮助的,因为我已经在线和stackoverflow研究。

2 个答案:

答案 0 :(得分:4)

对数字使用\d

>>> import re
>>> g = "C0N4rtist"
>>> re.sub(r'\d+', '', g)
'CNrtist'

请注意,您不需要正则表达式,str.translate与正则表达式版本相比速度非常快

>>> from string import digits
>>> g.translate(None, digits)
'CNrtist'

<强>时序:

>>> g = "C0N4rtist"*100
>>> %timeit g.translate(None, digits)      #winner
100000 loops, best of 3: 9.98 us per loop
>>> %timeit ''.join(i for i in g if not i.isdigit())
1000 loops, best of 3: 507 us per loop
>>> %timeit re.sub(r'\d+', '', g)
1000 loops, best of 3: 253 us per loop
>>> %timeit ''.join([i for i in g if not i.isdigit()])
1000 loops, best of 3: 352 us per loop
>>> %timeit ''.join([i for i in g if i not in digits])
1000 loops, best of 3: 277 us per loop

答案 1 :(得分:3)

没有必要为此使用正则表达式。你可以使用isdigit()函数

   def removeDigitsFromStr(_str):
        result = ''.join(i for i in _str if not i.isdigit())
        return result