使用Python解析混合平面文件数据以写入xls

使用Python解析混合平面文件数据以写入xls,python,python-3.x,algorithm,parsing,logic,Python,Python 3.x,Algorithm,Parsing,Logic,我有一个复杂的平面文件,其中包含大量混合类型的数据。尝试使用Python(我最熟悉的)对其进行解析,成功地使用手动解析将数据分类 现在,我已经提取了数据,需要将其制成表格,以便使用pandas或任何其他库将其写入xls 我已在pastebin粘贴数据,url为 数据采用非tabualr和表格格式,我需要放弃非表格数据,只需要将表格数据写入xls。 准确地说,我想删除以下数据- ABC命令------UIP块:; SE:ABC_UIOP_89TP 报告:+ve ABC_UIOP_89TP 2016

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

现在,我已经提取了数据,需要将其制成表格,以便使用pandas或任何其他库将其写入xls

我已在pastebin粘贴数据,url为

数据采用非tabualr和表格格式,我需要放弃非表格数据,只需要将表格数据写入xls。 准确地说,我想删除以下数据-

ABC命令------UIP块:;
SE:ABC_UIOP_89TP
报告:+ve ABC_UIOP_89TP 2016-09-23 15:16:14
O&M#998459350
%%/*Web=1571835373:;%
ID=0结果正常。

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


由于您的数据文件有特定的模式,我认为您可以这样做

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")

非常感谢Rajith,您的代码帮助了我90%,唯一的问题是它为每个表格数据创建了多个xls文件。在所需的输出中,列是静态的,数据应该在单个工作表中的同一列下不断追加,而不是创建多个xls文件。如果您能帮助我实现它,我将不胜感激:)@pycoder您可以将每个数据帧合并为一个大df,我已经更新了答案。谢谢,这是我需要的Rajith。它也帮助我学习了熊猫。很棒,很开心
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")