我从服务器获取数据如下
dataProducer00 ==> Collected: 37402 Answer (MQ): 6234 Text/s: 12467 Text/s[3s]: 12467 lined: 0/75 liveData: n/a diff: n/a neardiff: n/a diffSeq: n/a
dataProducer01 ==> Collected: 45697 Answer (MQ): 7617 Text/s: 15232 Text/s[3s]: 15232 lined: 0/85 liveData: n/a diff: n/a neardiff: n/a diffSeq: n/a
dataProducer02 ==> Collected: 55936 Answer (MQ): 9326 Text/s: 18645 Text/s[3s]: 18645 lined: 0/121 liveData: n/a diff: n/a neardiff: n/a diffSeq: n/a
dataCleaner00 ==> Collected: 0 Answer: 0 Ratio: 0 Text/s: 0 Text/s[2s]: 0 lined: 0/0 liveData: 48042 diff: 0 neardiff: 0 diffSeq: 0
dataCleaner01 ==> Collected: 65214 Answer: 34567 Ratio: 0.53 Text/s: 17283 Text/s[2s]: 17283 lined: 7/15 liveData: 48042 diff: 0 neardiff: 0 diffSeq: 0\
dataCleaner02 ==> Collected: 2175 Answer (MQ): 543 Ratio: 0.25 Text/s: 271 Text/s[2s]: 271 lined: 0/15 liveData: 48042 diff: 0 neardiff: 0 diffSeq: 0\
MACH0_CA_CFE_01_A ==> Collected: 0 breaks: 0 lined: 0/0 obtained: 0/0
MACH0_CA_MEC_AR_01_A ==> Collected: 8248 breaks: 0 lined: 10/16 obtained: 1/4
MACH0_CA_MEC_AR_02_A ==> Collected: 648 breaks: 0 lined: 1/16 obtained: 1/3
MACH2_CA_MEC_ITC_01_A ==> Collected: 0 breaks: 0 lined: 0/0 obtained: 0/0
MACH2_CA_TAP_01_A ==> Collected: 0 breaks: 0 lined: 0/0 obtained: 0/0
MACH2_CA_TAP_AR_01_A ==> Collected: 0 breaks: 0 lined: 0/0 obtained: 0/0
MACH3_FI_A ==> Collected: 0 breaks: 0 lined: 0/0 obtained: 0/0
我想要的输出如下
{
"Collected": {
"dataProducer00" : 374002,
..
"dataCleaner00" : 0,
..
"MACH0_CA_CFE_01_A" : 0,
"MACH0_CA_MEC_AR_01_A" : 8248,
"MACH0_CA_MEC_AR_02_A" : 648,
.. },
"Answer (MQ)": {
"dataProducer00" : 6234,
"dataProducer01" : 7617,
"dataProducer02" : 9326,
"dataCleaner02" : 543
},
"Answer": {
"dataCleaner00": 0,
"dataCleaner01": 34567
},
"Text/s": {
"dataProducer00" : 12467,
"dataProducer01" : 15232,
..
"dataCleaner00" : 0,
"dataCleaner01" : 17283,
..
},
"lined": {
"dataProducer00" : 0,
"dataProducer01" : 0,
"dataProducer02" : 0,
.. },
"lined_Top": {
"dataProducer00" : 75,
"dataProducer01" : 85,
"dataProducer02" : 121,
"dataCleaner00" : 0,
"dataCleaner01" : 15,
"dataCleaner02" : 15,
"MACH0_CA_CFE_01_A" : 0,
"MACH0_CA_MEC_AR_01_A" : 16,
"MACH0_CA_MEC_AR_02_A" : 16,
"MACH2_CA_MEC_ITC_01_A": 0,
"MACH2_CA_TAP_01_A": 0,
"MACH2_CA_TAP_AR_01_A": 0,
"MACH3_FI_A": 0
},
"liveData": {
"dataProducer00" : "n/a",
..
"dataCleaner02" : 48042
},
"breaks": {
"MACH0_CA_MEC_AR_01_A": 0,
..
"MACH2_CA_TAP_AR_01_A": 0
},
"Ratio": {
"dataCleaner00": 0,
"dataCleaner01": 0.53,
"dataCleaner02": 0.25
},
"obtained": {
"MACH0_CA_MEC_AR_01_A": 0,
"MACH0_CA_MEC_AR_02_A": 1,
..},
"obtained_Top": {
"MACH0_CA_MEC_AR_01_A": 0,
"MACH0_CA_MEC_AR_02_A": 4,
"MACH2_CA_MEC_ITC_01_A": 3,
.. "MACH3_FI_A": 0
},
"diff": {
"dataProducer00": "n/a",
.., "dataCleaner02" : 0
},
"neardiff": {
"dataProducer00": "n/a",
.. "dataCleaner00" : 0,
},
"diffSeq": {
"dataProducer00": "n/a",
.. "dataCleaner02" : 0
}
}
我花时间在循环中,没有什么能帮助我。得到的数据应该是通过发电机,所以这是更容易为我处理最后
我们可以通过简单的正则表达式或多个拆分来做到这一点吗?是否有任何通用的方法来处理所有类型的复杂数据。
这部分工作的代码,在我需要的消息和改变格式再次.
lines = data.strip().split('\n')
output = {}
field_regex = r'(\w+)\s*:\s*(\d+)'
#field_regex = r'(\w+)\s*:\s*'
field_pattern = re.compile(field_regex)
for line in lines:
match = re.match(r'^(.*?) --> (.*)', line)
if match:
name = match.group(1)
fields = match.group(2)
field_matches = re.findall(field_pattern, fields)
output[name] = {field: int(value) for field, value in field_matches}
print(output)
1条答案
按热度按时间qacovj5a1#
如果你想使用pandas:
输出: