Python:从字符串中提取数字并将数字放入列表

时间:2016-03-14 22:54:17

标签: python

我正在制作这个简单的程序,从字符串中提取所有数字并将它们放入列表中。当我打印时,输出为:[]。有人能帮助我吗?

new = []
def extract_nums(string):
    trash = []
    for x in string:
        if x.isalpha:
            trash.append(x)
        else:
            new.append(x)
extract_nums("hello 123")
print new

3 个答案:

答案 0 :(得分:0)

您的代码的主要问题是isalpha()需要括号。这是修复的代码:

new = []
def extract_nums(string):
    trash = []
    for x in string:
        if x.isalpha():  # added parentheses
            trash.append(x)
        else:
            new.append(x)

extract_nums("hello 123")
print(new)

一个更好的想法是使用isnumeric()来提取这样的数字:

new = []
def extract_nums(string):
    for x in string:
        if x.isnumeric():
            new.append(x)

extract_nums("hello 123")
print(new)

第二个更好的原因是因为第一个会输出空格和其他不是实际数字的字符。如果您只想要数字,请使用第二种方法。

答案 1 :(得分:0)

您想要一个字符串列表,还是将它们转换为数字?在这种情况下,使用try应该是最优雅的并解决这两个问题(我的意思是,删除所有不是数字的东西并转换它)

new = []
def extract_nums(string):
    for x in string:
        try:
            new.append(int(x))            
        except ValueError:
            continue

extract_nums("hello 123")
print(new)

我尽可能少地修改了你的代码。

答案 2 :(得分:-1)

我找到了正确答案。

new = []
def extract_nums(string):
    trash = []
    for x in string:
        if x.isalpha():
            trash.append(x)
        elif x == ' ':
            trash.append(x)
        else:
            new.append(x)
extract_nums("hello 123")
print (new)