说我有“123asdf”。如何删除所有非整数字符以使其变为“123”?
答案 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