解析文本文件中的数据

我有一个文本文件,其内容如下:


******** ENTRY 01 ********

ID:                  01

Data1:               0.1834869385E-002

Data2:              10.9598489301

Data3:              -0.1091356549E+001

Data4:                715

然后是一个空行,并重复更多类似的块,所有块都具有相同的数据字段。


我正在向Python移植C ++代码,并且某个部分逐行获取文件,检测文本标题,然后检测每个字段文本以提取数据。这看起来根本不是一个智能代码,而且我认为Python必须具有一些库才能轻松解析此类数据。毕竟,它几乎看起来像CSV!


有什么想法吗?


翻阅古今
浏览 211回答 3
3回答

手掌心

my_file:******** ENTRY 01 ********ID:                  01Data1:               0.1834869385E-002Data2:              10.9598489301Data3:              -0.1091356549E+001Data4:                715ID:                  02Data1:               0.18348674325E-012Data2:              10.9598489301Data3:              0.0Data4:                5748ID:                  03Data1:               20.1834869385E-002Data2:              10.954576354Data3:              10.13476858762435E+001Data4:                7456Python脚本:import rewith open('my_file', 'r') as f:    data  = list()    group = dict()    for key, value in re.findall(r'(.*):\s*([\dE+-.]+)', f.read()):        if key in group:            data.append(group)            group = dict()        group[key] = value    data.append(group)print data打印输出:[    {        'Data4': '715',        'Data1': '0.1834869385E-002',        'ID': '01',        'Data3': '-0.1091356549E+001',        'Data2': '10.9598489301'    },    {        'Data4': '5748',        'Data1': '0.18348674325E-012',        'ID': '02',        'Data3': '0.0',        'Data2': '10.9598489301'    },    {        'Data4': '7456',        'Data1': '20.1834869385E-002',        'ID': '03',        'Data3': '10.13476858762435E+001',        'Data2': '10.954576354'    }]

慕妹3146593

一个非常简单的方法可能是all_objects = []with open("datafile") as f:    for L in f:        if L[:3] == "***":            # Line starts with asterisks, create a new object            all_objects.append({})        elif ":" in L:            # Line is a key/value field, update current object            k, v = map(str.strip, L.split(":", 1))            all_objects[-1][k] = v
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python