我试图在列表中存储整数和浮点数,以便在第二时刻处理它们。现在,我知道这两个命令
A = map(int, re.findall('\d+', string1))
A = map(float, re.findall('\d+.\d+', string1))
但是如何调整它们以便在列表A中读取(并按顺序存储)整数和浮点数?
答案 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]