如何删除python中的所有非整数值

时间:2014-04-02 06:46:23

标签: python string replace

说我有“123asdf”。如何删除所有非整数字符以使其变为“123”?

5 个答案:

答案 0 :(得分:2)

你可以这样做:

''.join(x for x in your_string if x.isdecimal())

这将采用数字字符并将其添加到字符串中。

实施例

>>> your_string = 'asd8asdf798fad'
>>> print ''.join(x for x in your_string if x.isdecimal())
8798

>>> '1'.isdecimal()
True

>>> 'a'.isdecimal()
False

答案 1 :(得分:2)

我更喜欢这种方法:

>>> import re
>>> re.sub(r"\D", "", "123asdf")
'123'

答案 2 :(得分:1)

在Python 2.x中,您可以使用str.translate,就像这样

data = "123asdf"
import string
print data.translate(None, string.letters)
# 123

这里,str.translate的第一个参数将是字符的映射,说明哪个字符应该更改为什么。第二个参数是需要从字符串中删除的字符串。由于我们不需要翻译但删除字母,我们会将None传递给第一个参数,将string.letters传递给第二个参数。

在Python 3.x中,你可以做到

import string
print(data.translate(data.maketrans("", "", string.ascii_letters)))
# 123

答案 3 :(得分:0)

>>> s = '123asdf'
>>> filter(str.isdigit, s)
'123'
>>> ''.join(c for c in s if c.isdigit()) # alternate method
'123'

答案 4 :(得分:0)

您可以使用正则表达式替换:

>>> import re
>>> re.sub("[^0-9]", "", "sdkjh987978asd098as0980a98sd")
'987978098098098'

致谢:Removing all non-numeric characters from string in Python