Форум сайта python.su
0
Коллеги, добрый день.
Я новичек в программировании. Прошу совета.
Есть текствоый файл, в котором есть данные сформированные в одну колонку.
Данные выглядят примерно так:
20180918112820
User1
11
20180918132609
User2
2
20180918151534
User3
1
20180919155328
User4
1
…
Подскжите как правильно сформировать из этого списка файл в cvs, что бы получилось следующее
20180918112820;User1;11
20180918132609;User2;2
20180918151534;User3;1
20180919155328;User4;1
Заранее спасибо всем.
Офлайн
221
У Вас есть текстовой файл с четкой структурой данных - наборы данных группируются по три строчки. Значит чтобы сформировать 1 набор данных нужно считать 3 строки и получить из них 1 строку разделенных разделительным знаком.
Попробуйте
Офлайн
857
>>> import csv >>> >>> text = """\ ... 20180918112820 ... User1 ... 11 ... 20180918132609 ... User2 ... 2 ... 20180918151534 ... User3 ... 1 ... 20180919155328 ... User4 ... 1 ... """ >>> >>> lst = text.splitlines() >>> >>> with open('file.csv', 'w', newline='') as fout: ... writer = csv.writer(fout) ... while lst: ... writer.writerow(lst[:3]) ... lst = lst[3:] ... 25 24 24 24 >>> open('file.csv', 'rb').read() b'20180918112820,User1,11\r\n20180918132609,User2,2\r\n20180918151534,User3,1\r\n20180919155328,User4,1\r\n' >>>
Отредактировано py.user.next (Окт. 2, 2018 03:22:40)
Офлайн
0
Спасибо за совет) но у меня вопрос, как мне передать то что находится в файле, а не строки?
Попробовал так:
import csv
resultfile = “/home/lynx/result.txt”
lst = resultfile.splitlines()
with open('/home/lynx/file.csv', ‘w’, newline='') as fout:
writer = csv.writer(fout)
while lst:
writer.writerow(lst)
lst = lst
Ничего не получилось)
Офлайн
0
Разобрлася сам:
import csv lst = open("/home/lynx/programming/result.txt").readlines() with open('/home/lynx/programming/file.csv', 'w', newline='') as fout: writer = csv.writer(fout) while lst: writer.writerow(lst[:3]) lst1 = lst[3:]
Офлайн
857
lucidlynxТам не lst1 надо, а lst.
Разобрлася сам:lst1 = lst[3:]
ifname = '/home/lynx/result.txt' ofname = '/home/lynx/file.csv' with open(ifname, encoding='utf-8') as fin: lst = list(fin) with open(ofname, 'w', newline='') as fout: writer = csv.writer(fout) while lst: writer.writerow(lst[:3]) lst = lst[3:]
Отредактировано py.user.next (Окт. 2, 2018 11:17:32)
Офлайн
0
Спасибо, это опечатка была)
Офлайн