这里。它以一种更高效的方法解析数据,它使用了一个函数,您也可以只提供一个数据列表。如果你想把它变成一个发电机,这也是非常容易的。在import re
def parser(data):
result = []
for p in data:
ms = re.match(r'(\S+).*?(O:\S+).*(R:\S+).*mid:(\d+)', p)
if not ms:
continue
result.append({'Heure':ms.group(1), 'Source':ms.group(2), 'Destination':ms.group(3), 'MID':ms.group(4)})
return result
data = ["00:02:12.935 mta Messages I Doc O:NVS:FAXG3/ R:NVS:SMTP.0/xxxx@x.fr mid:6499",
"00:03:12.935 mta Messages I Doc O:NVS:FAXG3/ R:NVS:SMTP.0/xxxxx@xxxxx.fr mid:6599"]
print parser(data)
结果:
^{pr2}$
作为发电机:import re
def parser(data):
for p in data:
ms = re.match(r'(\S+).*?(O:\S+).*(R:\S+).*mid:(\d+)', p)
if not ms:
continue
yield {'Heure':ms.group(1), 'Source':ms.group(2), 'Destination':ms.group(3), 'MID':ms.group(4)}
data = ["00:02:12.935 mta Messages I Doc O:NVS:FAXG3/ R:NVS:SMTP.0/xxxx@x.fr mid:6499",
"00:03:12.935 mta Messages I Doc O:NVS:FAXG3/ R:NVS:SMTP.0/xxxxx@xxxxx.fr mid:6599"]
for r in parser(data):
print r
结果:>>>
{'Source': 'O:NVS:FAXG3/', 'Destination': 'R:NVS:SMTP.0/xxxx@x.fr', 'Heure': '00:02:12.935', 'MID': '6499'}
{'Source': 'O:NVS:FAXG3/', 'Destination': 'R:NVS:SMTP.0/xxxxx@xxxxx.fr', 'Heure': '00:03:12.935', 'MID': '6599'}def extract(data):
ms = re.match(r'(\S+).*?(O:\S+).*(R:\S+).*mid:(\d+)', data)
if not ms:
raise Exception('Could not extract data')
return {'Heure':ms.group(1), 'Source':ms.group(2), 'Destination':ms.group(3), 'MID':ms.group(4)}
tableau = [extract(data) for data in data_list]