如何从字符串列表中提取数字?

lab*_*mat 2 python string python-2.x

我应该如何仅从中提取数字

a = ['1 2 3', '4 5 6', 'invalid']
Run Code Online (Sandbox Code Playgroud)

我试过了:

mynewlist = [s for s in a if s.isdigit()]
print mynewlist
Run Code Online (Sandbox Code Playgroud)

for strn in a:
    values = map(float, strn.split())
print values
Run Code Online (Sandbox Code Playgroud)

两者都失败了,因为数字之间有空格。

注意:我试图实现输出为:

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

pal*_*bot 6

我认为您需要将中的每个项目list作为空格上的拆分字符串进行处理。

a = ['1 2 3', '4 5 6', 'invalid']
numbers = []
for item in a:
    for subitem in item.split():
        if(subitem.isdigit()):
            numbers.append(subitem)
print(numbers)

['1', '2', '3', '4', '5', '6']
Run Code Online (Sandbox Code Playgroud)

或者在一个整洁的理解中:

[item for subitem in a for item in subitem.split() if item.isdigit()]
Run Code Online (Sandbox Code Playgroud)