首页 > 解决方案 > 使用 Python 解析混合平面文件数据以写入 xls

问题描述

我有一个包含大量混合类型数据的复杂平面文件。尝试使用 Python 解析它(我最熟悉),成功地使用手动解析来分类分离数据。

现在卡在我已经提取数据并需要将其制成表格的地方,以便我可以使用 pandas 或任何其他库将其写入 xls。

我在 pastebin 粘贴了数据,网址是https://pastebin.com/qn9J5nUL

数据有非表格和表格格式,我需要丢弃非表格数据,只需将表格数据写入xls。准确地说,我想删除以下数据- ABC Command-----UIP BLOCK:; SE : ABC_UIOP_89TP Report : +ve ABC_UIOP_89TP 2016-09-23 15:16:14 O&M #998459350 %%/*Web=1571835373:;%% ID = 0 Result Ok.

并且仅将以下格式数据转换为 xls(示例,不准确。请参阅 pastebin url 以查看完整的数据格式) -

Local Info ID  ID Name           ID Frequency           ID Data                My ID                  

0              XXX_1               0                       12                    13                        

标签: pythonpython-3.xalgorithmparsinglogic

解决方案


由于您的数据文件具有某种模式,我认为您可以这样做。

import pandas
s = []
e = []
with open('data_to_be_parsed.txt') as f:
    datafile = f.readlines()
    for idx,line in enumerate(datafile):

        if 'Local' in line:
            s.append(idx)
        if '(Number of results' in line:
            e.append(idx)
    maindf = pd.DataFrame()
    for i in range(len(s)):
        head = list(datafile[s[i]].split("  "))
        head = [x for x in head if x.strip()]
        tmpdf = pd.DataFrame(columns=head)
        for l_ in range(s[i]+1,e[i]):
            da = datafile[l_]
            if len(da)>1:
                data = list(da.split("  "))
                data =  [x for x in data if x.strip()]
                tmpdf = tmpdf.append(dict(zip(head,data)),ignore_index=True)
        maindf = pd.concat([maindf,tempdf])
    maindf.to_excel("output.xlsx")

推荐阅读