小编典典

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

python

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

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中进行了研究。


阅读 386

收藏
2021-01-20

共1个答案

小编典典

使用\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
2021-01-20