在列表中查找整数和浮点数

时间:2015-11-29 13:25:13

标签: python regex string

我试图在列表中存储整数和浮点数,以便在第二时刻处理它们。现在,我知道这两个命令

A = map(int, re.findall('\d+', string1))
A = map(float, re.findall('\d+.\d+', string1))

但是如何调整它们以便在列表A中读取(并按顺序存储)整数和浮点数?

1 个答案:

答案 0 :(得分:1)

使小数点部分可选:

A = map(lambda v: float(v) if '.' in v else int(v), 
        re.findall(r'\d+(?:\.\d+)?', string1))

请注意,如果缺少一个小数点,我使用lambda测试转换为int,并且我转义 .以匹配文字点,而不仅仅是任何字符,正则表达式中.的正常含义。

演示:

>>> import re
>>> s = '42 12.43 10'
>>> map(lambda v: float(v) if '.' in v else int(v), re.findall(r'\d+(?:\.\d+)?', s))
[42, 12.43, 10]