извлечение столбца из текстового файла, содержащего заголовки и разделители - PullRequest
1 голос
/ 03 июля 2019

У меня есть текстовый файл, который выглядит следующим образом:

~Date and Time of Data Converting: 15.02.2019 16:12:44
~Name of Test: XXX
~Address: ZZZ
~ID: OPP
~Testchannel: CH06

~a;b;DateTime;c;d;e;f;g;h;i;j;k;extract;l;m;n;o;p;q;r
0;1;04.03.2019 07:54:19;0;0;2;Pause;3,57263521596443;0;0;0;0;24,55957;1;3;0;0;0;0;0
5,5523894132E-7;2;04.03.2019 07:54:19;5,5523894132E-7;5,5523894132E-7;2;Pause;3,57263521596443;0;0;0;0;24,55957;1;0;0;0;0;0;0
0,00277777777779538;3;04.03.2019 07:54:29;0,00277777777779538;0,00277777777779538;2;Pause;3,5724446855812;0;0;0;0;24,55653;1;1;0;0;0;0;0
0,00555555532278617;4;04.03.2019 07:54:39;0,00555555532278617;0,00555555532278617;2;Pause;3,57263521596443;0;0;0;0;24,55957;1;1;0;0;0;0;0
0,00833333333338613;5;04.03.2019 07:54:49;0,00833333333338613;0,00833333333338613;2;Pause;3,57263521596443;0;0;0;0;24,55653;1;1;0;0;0;0;0
0,0111112040002119;6;04.03.2019 07:54:59;0,0111112040002119;0,0111112040002119;2;Pause;3,57263521596443;0;0;0;0;24,55653;1;1;0;0;0;0;0
0,013888887724954;7;04.03.2019 07:55:09;0,013888887724954;0,013888887724954;2;Pause;3,57263521596443;0;0;0;0;24,55653;1;1;0;0;0;0;0

Мне нужно извлечь значения из столбца с именем extract, и мне нужно сохранить выходные данные в виде файла Excel.Может ли кто-нибудь дать мне представление о том, как я могу действовать?До сих пор я только смог создать пустой файл Excel для вывода, и я прочитал текстовый файл.Однако я не знаю, как добавить вывод в пустой файл Excel.

import os
file=open('extract.csv', "a")
if os.path.getsize('extract.csv')==0:
    file.write(" "+";"+"Datum"+";"+"extract"+";")

with open('myfile.txt') as f:
    dat=[f.readline() for x in range(10)]
    datum=dat[7].split(' ')[3]
data = np.genfromtxt('myfile.txt', delimiter=';', skip_header=12,dtype=str)

1 Ответ

1 голос
/ 03 июля 2019

Вы можете использовать модуль pandas.

  • Вам нужно прочитать skip первых строк вашего текстового файла. Здесь я считаю, что не знаю, сколько их. Я зацикливаюсь, пока не найду строку данных.
  • Затем прочитайте данные.
  • Наконец, экспортируйте его как фрейм данных с to_excel (doc)

Вот код:

# Import module
import pandas as pd

# Read file
with open('temp.txt') as f:
    content = f.read().split("\n")

# Skip the first lines  (find number start data)
for i, line in enumerate(content):
    if line and line[0] != '~': break

# Columns names and data
header = content[i - 1][1:].split(';')
data = [row.split(';') for row in content[i:]]

# Store in dataframe
df = pd.DataFrame(data, columns=header)
print(df)
#                      a  b             DateTime                    c                    d  e      f  ...  l  m  n  o  p  q  r
# 0                    0  1  04.03.2019 07:54:19                    0                    0  2  Pause  ...  1  3  0  0  0  0  0
# 1      5,5523894132E-7  2  04.03.2019 07:54:19      5,5523894132E-7      5,5523894132E-7  2  Pause  ...  1  0  0  0  0  0  0
# 2  0,00277777777779538  3  04.03.2019 07:54:29  0,00277777777779538  0,00277777777779538  2  Pause  ...  1  1  0  0  0  0  0
# 3  0,00555555532278617  4  04.03.2019 07:54:39  0,00555555532278617  0,00555555532278617  2  Pause  ...  1  1  0  0  0  0  0
# 4  0,00833333333338613  5  04.03.2019 07:54:49  0,00833333333338613  0,00833333333338613  2  Pause  ...  1  1  0  0  0  0  0
# 5   0,0111112040002119  6  04.03.2019 07:54:59   0,0111112040002119   0,0111112040002119  2  Pause  ...  1  1  0  0  0  0  0
# 6    0,013888887724954  7  04.03.2019 07:55:09    0,013888887724954    0,013888887724954  2  Pause  ...  1  1  0  0  0  0  0

# Select only the Extract column
# df = df.Extract

# Save the data in excel file
df.to_excel("OutPut.xlsx", "MySheetName", index=False)

Примечание: если вы знаете количество пропускаемых строк, вы можете просто загрузить кадр данных с помощью read_csv с помощью параметра skiprows. (док) .

Надеюсь, это поможет!

...