我有一些文本檔案,格式如下:
{"MessageType":"33 (SM data)","REG":"BUL","TS":"2022-02-24T11:02:00","M":false,"LP":3,"CT":119,"SM":[{"LM":602,"SA/LK":67,"RT":"Strategic Approach Record","SG":"1","PT":52,"Lanes":[{"L":1,"MF":15},{"L":2,"MF":19}]},{"LM":602,"SA/LK":68,"RT":"Strategic Approach Record","SG":"2","PT":28,"Lanes":[{"L":1,"MF":7},{"L":2,"MF":6}]},{"LM":602,"SA/LK":69,"RT":"Strategic Approach Record","SG":"3","PT":17,"Lanes":[{"L":1,"MF":2}]},{"LM":602,"SA/LK":70,"RT":"Strategic Approach Record","SG":"4","PT":70,"Lanes":[{"L":1,"MF":12},{"L":2,"MF":4}]},{"LM":602,"SA/LK":3,"RT":"Link Record","SG":"1","PT":52,"Lanes":[{"L":1,"MF":15},{"L":2,"MF":19}]},{"LM":602,"SA/LK":4,"RT":"Link Record","SG":"4","PT":70,"Lanes":[{"L":1,"MF":12},{"L":2,"MF":4}]}],"SP":[{"A":"(Stretch)33%","B":"20%","C":"27%","D":"20%"}]}
有什么辦法可以將文本拆分成如下所示的內容:
[{'LM': 602,
'SA/LK': 67,
'RT': 'Strategic Approach Record',
'SG': '1',
'PT': 52,
'Lanes': [{'L': 1, 'MF': 15}, {'L': 2, 'MF': 19}]},
{'LM': 602,
'SA/LK': 68,
'RT': 'Strategic Approach Record',
'SG': '2',
'PT': 28,
'Lanes': [{'L': 1, 'MF': 7}, {'L': 2, 'MF': 6}]},
{'LM': 602,
'SA/LK': 69,
'RT': 'Strategic Approach Record',
'SG': '3',
'PT': 17,
'Lanes': [{'L': 1, 'MF': 2}]},
{'LM': 602,
'SA/LK': 70,
'RT': 'Strategic Approach Record',
'SG': '4',
'PT': 70,
'Lanes': [{'L': 1, 'MF': 12}, {'L': 2, 'MF': 4}]},
{'LM': 602,
'SA/LK': 3,
'RT': 'Link Record',
'SG': '1',
'PT': 52,
'Lanes': [{'L': 1, 'MF': 15}, {'L': 2, 'MF': 19}]},
{'LM': 602,
'SA/LK': 4,
'RT': 'Link Record',
'SG': '4',
'PT': 70,
'Lanes': [{'L': 1, 'MF': 12}, {'L': 2, 'MF': 4}]}]
這樣我就可以輕松地將其轉換為串列或字典...
我嘗試使用 string.split(','),但并沒有真正起作用 - 因為它會拆分每個 ','
uj5u.com熱心網友回復:
看起來像 JSON。使用內置json庫決議成 Python 物件:
In [1]: import json
In [2]: data = '...' # string provided by OP, read from file
In [3]: json.loads(data)
Out[3]:
{'MessageType': '33 (SM data)',
'REG': 'BUL',
'TS': '2022-02-24T11:02:00',
'M': False,
'LP': 3,
'CT': 119,
'SM': [{'LM': 602,
'SA/LK': 67,
'RT': 'Strategic Approach Record',
'SG': '1',
'PT': 52,
'Lanes': [{'L': 1, 'MF': 15}, {'L': 2, 'MF': 19}]},
{'LM': 602,
'SA/LK': 68,
'RT': 'Strategic Approach Record',
'SG': '2',
'PT': 28,
'Lanes': [{'L': 1, 'MF': 7}, {'L': 2, 'MF': 6}]},
{'LM': 602,
'SA/LK': 69,
'RT': 'Strategic Approach Record',
'SG': '3',
'PT': 17,
'Lanes': [{'L': 1, 'MF': 2}]},
{'LM': 602,
'SA/LK': 70,
'RT': 'Strategic Approach Record',
'SG': '4',
'PT': 70,
'Lanes': [{'L': 1, 'MF': 12}, {'L': 2, 'MF': 4}]},
{'LM': 602,
'SA/LK': 3,
'RT': 'Link Record',
'SG': '1',
'PT': 52,
'Lanes': [{'L': 1, 'MF': 15}, {'L': 2, 'MF': 19}]},
{'LM': 602,
'SA/LK': 4,
'RT': 'Link Record',
'SG': '4',
'PT': 70,
'Lanes': [{'L': 1, 'MF': 12}, {'L': 2, 'MF': 4}]}],
'SP': [{'A': '(Stretch)33%', 'B': '20%', 'C': '27%', 'D': '20%'}]}
這是一個字典,所以如果你只想要SM資料陣列:
In [3]: json.loads(data)['SM']
Out[3]:
[{'LM': 602,
'SA/LK': 67,
'RT': 'Strategic Approach Record',
'SG': '1',
'PT': 52,
'Lanes': [{'L': 1, 'MF': 15}, {'L': 2, 'MF': 19}]},
{'LM': 602,
'SA/LK': 68,
'RT': 'Strategic Approach Record',
'SG': '2',
'PT': 28,
'Lanes': [{'L': 1, 'MF': 7}, {'L': 2, 'MF': 6}]},
{'LM': 602,
'SA/LK': 69,
'RT': 'Strategic Approach Record',
'SG': '3',
'PT': 17,
'Lanes': [{'L': 1, 'MF': 2}]},
{'LM': 602,
'SA/LK': 70,
'RT': 'Strategic Approach Record',
'SG': '4',
'PT': 70,
'Lanes': [{'L': 1, 'MF': 12}, {'L': 2, 'MF': 4}]}, {'LM': 602,
'SA/LK': 3,
'RT': 'Link Record',
'SG': '1',
'PT': 52,
'Lanes': [{'L': 1, 'MF': 15}, {'L': 2, 'MF': 19}]},
{'LM': 602,
'SA/LK': 4,
'RT': 'Link Record',
'SG': '4',
'PT': 70,
'Lanes': [{'L': 1, 'MF': 12}, {'L': 2, 'MF': 4}]}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/431520.html
