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

新手上路,请多包涵

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

a = ['1 2 3', '4 5 6', 'invalid']

我努力了:

 mynewlist = [s for s in a if s.isdigit()]
print mynewlist

for strn in a:
    values = map(float, strn.split())
print values

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

注意:我正在尝试将输出实现为:

 [1, 2, 3, 4, 5, 6]

原文由 labmat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 403
2 个回答

我认为您需要将 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']

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

 [item for subitem in a for item in subitem.split() if item.isdigit()]

原文由 paleolimbot 发布,翻译遵循 CC BY-SA 3.0 许可协议

假设列表只是字符串:

 [int(word) for sublist in map(str.split, a) for word in sublist if word.isdigit()]

原文由 Patrick Haugh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题