Разбор смешанных данных плоских файлов для записи в xls с использованием Python - PullRequest
0 голосов
/ 29 октября 2019

У меня сложный плоский файл с огромными данными смешанного типа. Пытаясь разобрать его, используя Python (наиболее известный мне), удалось разделить данные категорически, используя ручной анализ.

Теперь застрял в точке, где я извлек данные и мне нужно сделать их табличными, чтобы я мог их записатьв xls, используя pandas или любую другую библиотеку.

Я вставил данные в pastebin, URL - это 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, чтобы увидеть полный формат данных) -

Local Info ID  ID Name           ID Frequency           ID Data                My ID                  

0              XXX_1               0                       12                    13                        

1 Ответ

0 голосов
/ 30 октября 2019

Поскольку ваш файл данных имеет определенный шаблон, я думаю, вы можете сделать это следующим образом.

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