如何在Python中使用以下格式的字符串获取数字?它包含定界符的混合组合,例如tab
,parenthesis
,cm
,space
和#
。
我使用了以下代码,但是它不能正确分割数字。
s = "1.0000e+036 (1.2365e-004,6.3265e+003cm) (2.3659e-002, 2.3659e-002#)"
parts = re.split('\s|(?<!\d)[,.](?!\d)', s)
print(parts)
['1.0000e+036', '(1.2365e-004,6.3265e+003cm)', '(2.3659e-002,', '2.3659e-002#)']
我正在尝试提取:
[1.0000e+036, 1.2365e-004, 6.3265e+003, 2.3659e-002, 2.3659e-002]
有人可以帮忙吗?
更新:
我尝试了如下正则表达式,但未能将正指数分解
s = "1.0000e+036 (1.2365e-004,6.3265e+003cm) (2.3659e-002, 2.3659e-002#)"
match_number = re.compile('-?\ *[0-9]+\.?[0-9]*(?:[Ee]\ *-?\ *[0-9]+)?')
final_list = [float(x) for x in re.findall(match_number, s)]
print(final_list)
[1.0, 36.0, 0.00012365, 6.3265, 3.0, 0.023659, 0.023659]
可以看出,第一个数字是1e36
,它被解析为两个数字1.0
和36.0
。
答案 0 :(得分:0)
您无需将这些项目视为定界符。相反,您似乎只需要一个正则表达式来提取行中的所有浮点数(包括指数/工程符号),而只需忽略其余字符即可。通过简单的搜索,即可轻松获得全面的数值表达式。