我是一名Python初学者,有一个问题。例如,当我从文件中读取一行时,我得到了一个看起来像这样的字符串。
thestring = '000,5\r\n'
怎样从字符串中移除所有非整数字符,然后将该字符串转换为整数? 谢谢!
使用str.translate
,这可能是最快的方法:
>>> strs = '000,5\r\n'
>>> from string import ascii_letters, punctuation, whitespace
>>> ignore = ascii_letters + punctuation + whitespace
>>> strs.translate(None, ignore)
'0005'
使用正则表达式
:
>>> import re
>>> re.sub(r'[^\d]+','',strs) #or re.sub(r'[^0-9]+','',strs)
'0005'
使用 str.join
和 str.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
0xFFFFFF
)或浮点数(-592.45821543e+04
)吗? - AJMansfield