正在 Python 中解析文本事件文件

Parsing text event file in Python

我有一个包含事件数据的大型文本文件,我正在尝试将其解析为 csv。结构如下所示:

开始
用户:一个
时间:1000
点击次数:1
命令 A:2
命令 B:1
结束
开始
用户:b
时间:00
点击次数:1
命令 A:2
命令 B:1
命令 C:1
结束

使用 START 和 END 标签分隔事件,我试图对其进行解析以创建一个 csv 文件,其中每个事件作为行,其他属性作为列,因此在上面的示例中,列将是 USER、TIME、CLICKS、COMMAND A、COMMAND B、COMMAND C,每个值将是 :

之后的值

我知道这段代码会读取一个单独的事件:

with open('sampleIVTtxt.txt', 'r') as input_data:
for line in input_data:
    if line.strip() == 'START REPORT':
break
for line in input_data:  
    if line.strip() == 'END':

我卡住的地方是如何解析事件块中的行并将它们存储为 csv 中的列和值。我在考虑事件块中的每一行,我需要使用正则表达式解析列名称,然后将这些名称存储在数组中并使用 writerow(namesarray) 创建列。但我不确定如何遍历整个 txt 文件并将后续事件值存储在这些列中。

我是 python 的新手,如有任何帮助,我们将不胜感激。

类似于:

import csv

with open('sampleIVTtxt.csv', 'w') as csvfile:
    fieldnames = ['USER', 'TIME','CLICKS','COMMAND_A','COMMAND_B','COMMAND_C']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()

with open('sampleIVTtxt.txt', 'r') as input_data:
for line in input_data:
    thisLine=line.strip()
    if thisLine == 'START':
       myDict={}
    elif "USER" in thisLine:
       myDict['USER'] = thisLine[6:]
     ....and so on....
    elif thisLine == 'END':
      writer.writerow(myDict)