Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2018 17:43:03

lucidlynx
Зарегистрирован: 2018-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование файла csv из text

Коллеги, добрый день.
Я новичек в программировании. Прошу совета.
Есть текствоый файл, в котором есть данные сформированные в одну колонку.
Данные выглядят примерно так:
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
Заранее спасибо всем.

Офлайн

#2 Окт. 1, 2018 18:48:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Формирование файла csv из text

У Вас есть текстовой файл с четкой структурой данных - наборы данных группируются по три строчки. Значит чтобы сформировать 1 набор данных нужно считать 3 строки и получить из них 1 строку разделенных разделительным знаком.
Попробуйте



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 2, 2018 03:21:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Формирование файла csv из text

  
>>> 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)

Офлайн

#4 Окт. 2, 2018 09:31:36

lucidlynx
Зарегистрирован: 2018-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование файла csv из text

Спасибо за совет) но у меня вопрос, как мне передать то что находится в файле, а не строки?
Попробовал так:
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
Ничего не получилось)

Офлайн

#5 Окт. 2, 2018 11:14:47

lucidlynx
Зарегистрирован: 2018-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование файла csv из text

Разобрлася сам:

 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:]

Офлайн

#6 Окт. 2, 2018 11:15:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Формирование файла csv из text

lucidlynx
Разобрлася сам:
 lst1 = lst[3:]
Там не 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:]



Отредактировано py.user.next (Окт. 2, 2018 11:17:32)

Офлайн

#7 Окт. 2, 2018 11:24:15

lucidlynx
Зарегистрирован: 2018-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование файла csv из text

Спасибо, это опечатка была)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version