У меня есть папка с 50 файлами .txt, содержащими данные в следующем формате.Извлечение данных из нескольких файлов TXT и создание сводного файла CSV в Python
=== Predictions on test data ===
inst# actual predicted error distribution (OFTd1_OF_Latency)
1 1:S 2:R + 0.125,*0.875 (73.84)
Мне нужно написать программу, которая сочетает в себе следующее: мой номер индекса (I), буква истинного класса (R или S), буква предсказанного класса, и каждый из предсказаний распределения (десятичные знаки меньше 1,0).
Я хотел бы, чтобы он выглядел следующим образом, когда был закончен, но предпочтительно как CSV-файл.
ID True Pred S R
1 S R 0.125 0.875
2 R R 0.105 0.895
3 S S 0.945 0.055
. . . . .
. . . . .
. . . . .
n S S 0.900 0.100
Я новичок и немного нечеткой о том, как получить все, что разобраны, а затем сцепляются и добавляется. Вот что я думал, но не стесняйтесь предлагать другое направление, если это будет проще.
for i in range(1, n):
s = str(i)
readin = open('mydata/output/output'+s+'out','r')
#The files are all named the same but with different numbers associated
output = open("mydata/summary.csv", "a")
storage = []
for line in readin:
#data extraction/concatenation here
if line.startswith('1'):
id = i
true = # split at the ':' and take the letter after it
pred = # split at the second ':' and take the letter after it
#some have error '+'s and some don't so I'm not exactly sure what to do to get the distributions
ds = # split at the ',' and take the string of 5 digits before it
if pred == 'R':
dr = #skip the character after the comma but take the have characters after
else:
#take the five characters after the comma
lineholder = id+' , '+true+' , '+pred+' , '+ds+' , '+dr
else: continue
output.write(lineholder)
Я думаю, что с помощью индексов был бы другой вариант, но это может усложнить ситуацию, если интервал выключен в любом из файлов, и я не проверил это точно.
Благодарим за помощь!
Работала очень хорошо с несколькими модификациями (поместив ds под if/else, потому что если pred = S, то у нее была звездочка). Благодаря! – user3758068