如何从字符串中删除所有非整数? (蟒蛇)

时间:2013-06-18 20:15:20

标签: python regex string

我对python很新。我有个问题。例如,当我从文件中读取一行时,我有一个看起来像这样的字符串。

thestring = '000,5\r\n'

如何从此字符串中删除所有非整数,然后将此字符串转换为整数?谢谢!

1 个答案:

答案 0 :(得分:11)

使用str.translate,这可能是执行此操作的最快方法:

>>> strs = '000,5\r\n'    
>>> from string import ascii_letters, punctuation, whitespace
>>> ignore = ascii_letters + punctuation + whitespace
>>> strs.translate(None, ignore)
'0005'

使用regex

>>> import re
>>> re.sub(r'[^\d]+','',strs)    #or re.sub(r'[^0-9]+','',strs)
'0005'

使用str.joinstr.isdigit

>>> "".join([x for x in strs  if x.isdigit()])
'0005'

使用 int() 获取整数:

>>> int('0005')
5

时间比较:

>>> strs = strs*10**4
>>> %timeit strs.translate(None, ignore)
1000 loops, best of 3: 441 us per loop

>>> %timeit re.sub(r'[^\d]+','',strs)
10 loops, best of 3: 20.3 ms per loop

>>> %timeit re.sub(r'[^0-9]+','',strs)
100 loops, best of 3: 17.1 ms per loop

>>> %timeit "".join([x for x in strs  if x.isdigit()])
10 loops, best of 3: 19.2 ms per loop