Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove all non-integers from a string? (Python)

I'm pretty new to python. I have a question. Say for example when I read a line from a file I have a string that looks like this.

thestring = '000,5\r\n'

How do I remove all non-integers from this string and then convert this string into an integer itself? Thanks!

like image 989
Binka Avatar asked Dec 20 '22 04:12

Binka


1 Answers

Using str.translate, this is probably the fastest way to do this:

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

Using regex:

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

Using str.join and str.isdigit:

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

Use int() to get the integer:

>>> int('0005')
5

Timing comparisons:

>>> 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
like image 161
Ashwini Chaudhary Avatar answered Jan 02 '23 11:01

Ashwini Chaudhary