【发布时间】:2021-07-10 15:19:05
【问题描述】:
我正在尝试解析来自测量机器的数据。它输出以下形状的非结构化数据(制表符分隔):
# control.dat
X001 A3 100.0 20.0 40.0
A5 124.0
I3 125.0
X002 C3 200.054 20.494 45.0
C5 122.0
K3 122.01
是否建议使用正则表达式来查找以X0... 开头的行,如果可以,该怎么做?使用生成的解析数据,我想以以下形式填充 Python 字典(以便在需要时可以轻松地将其转换为 JSON):
{ "PARSED" : [
{
"PARAM_1" : 100.0,
"PARAM_2" : 20.0,
"PARAM_3" : 40.0
},
{
"PARAM_1" : 200.054,
"PARAM_2" : 20.494
"PARAM_3" : 45.0
}
]}
目前我正在使用以下内容:
with("control.dat") as controls_data:
controls = []
for row in controls_data.split("\r\n"):
# X A3 100.0 20.0 40.0
tmp = re.findall(r"^X \d* \s* \D\d* \s* \d*\.\d* \s* \d*\.\d* \s* \d*.\d* \s*$", row)
if len(tmp) > 0:
controls.append(tmp[0])
return controls_ra
真的需要使用 forloop 来遍历所有条目并在单独的列表中收集与模式匹配的那些行吗?是否有可以一次应用于行列表的正则表达式?
任何建议都应与 Python 2.7 兼容。
【问题讨论】:
标签: regex python-2.7