#python #csv #txt
#python #csv #текст
Вопрос:
У меня есть файл .txt, который выглядит следующим образом: пример файла txt
Я хочу создать файл .csv, где в первой строке будут записаны имена (ключи, значения), а ниже — значения каждого имени. Это должно быть что-то вроде этого: пример файла CSV
Комментарии:
1. у вас есть один текстовый файл или два для ключей и значений? обновить вопрос
2. один текстовый файл и приведенный выше пример — это именно то, что находится внутри.
Ответ №1:
Поскольку текстовый файл состоит из двух строк, после импорта он отображается как строка, поэтому вот что я бы сделал
import re
f = open('textfile.txt', 'r')
#new output file
new_csv = open('output.csv' 'w')
text = f.read()
ks = text.split('n')[0]
ve = text.split('n')[1]
keys = re.findall(r"'(. ?)'", str(ks))
values = re.findall(r"'(. ?)'", str(ve))
for key, value in zip(keys, values):
new_csv.write(key ',' value 'n')
new_csv.close()
Ответ №2:
Попробуйте это:
import csv
k = ['0.0', '0.25', '0.5', '0.75', '1.0', '1.25']
v = [5, 46, 597, 2882, 5398, 4]
with open("output.csv", 'w') as file:
wr = csv.writer(file)
wr.writerow(["keys", "values"])
for row in zip(k, v):
wr.writerow(row)
Вывод .csv
файла:
keys,values
0.0,5
0.25,46
0.5,597
0.75,2882
1.0,5398
1.25,4
РЕДАКТИРОВАТЬ: Это рабочий код (то есть полный взлом) для образца данных из того файла, который вы показали. Я разбираю его как есть, поэтому вам, возможно, придется отредактировать код, если данные изменятся.
Содержимое data.txt
:
keys(['0.0', '10.0', '20.0', '30.0'])
values([43430, 156, 3, 1])
Код:
import ast
import csv
import re
p = re.compile(r"((.*))")
with open("data.txt") as f:
data = f.readlines()
parsed = [
ast.literal_eval(
''.join(i for i in re.search(p, l.strip()).groups())
) for l in data
]
with open("output.csv", 'w') as file:
wr = csv.writer(file)
wr.writerow(["keys", "values"])
for row in zip(*parsed):
wr.writerow(row)
Содержимое output.csv
файла.
keys,values
0.0,43430
10.0,156
20.0,3
30.0,1
Комментарии:
1. Спасибо за быстрый ответ, но это жестко. Выше была просто копия того, что было внутри небольшого .txt файла. Он может быть намного больше с множеством разных имен и значений.
2. Покажите мне пример этого файла, пара строк будет в самый раз.
3. ключи([‘0.0’, ‘10.0’, ‘20.0’, ‘30.0’]) значения([43430, 156, 3, 1]) Это именно то, что находится внутри одного небольшого файла .txt
4. Это на одной строке? Это две строки?
5. 2 строки, но в комментарии невозможно сделать 2 строки. Извините.