lucidlynx
Окт. 1, 2018 17:43:03
Коллеги, добрый день.
Я новичек в программировании. Прошу совета.
Есть текствоый файл, в котором есть данные сформированные в одну колонку.
Данные выглядят примерно так:
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
Заранее спасибо всем.
JOHN_16
Окт. 1, 2018 18:48:28
У Вас есть текстовой файл с четкой структурой данных - наборы данных группируются по три строчки. Значит чтобы сформировать 1 набор данных нужно считать 3 строки и получить из них 1 строку разделенных разделительным знаком.
Попробуйте
py.user.next
Окт. 2, 2018 03:21:29
>>> 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'
>>>
lucidlynx
Окт. 2, 2018 09:31:36
Спасибо за совет) но у меня вопрос, как мне передать то что находится в файле, а не строки?
Попробовал так:
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
Ничего не получилось)
lucidlynx
Окт. 2, 2018 11:14:47
Разобрлася сам:
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:]
py.user.next
Окт. 2, 2018 11:15:35
lucidlynx
Разобрлася сам:
Там не lst1 надо, а lst.
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:]
lucidlynx
Окт. 2, 2018 11:24:15
Спасибо, это опечатка была)