Как извлечь данные из файла CSV, который только один столбец (имя, телефон, адрес) - PullRequest
0 голосов
/ 14 января 2019

У меня есть файл CSV. Это только один столбец. Строка 1 = имя. Линия 2 = Телефон. Строка 3-5 = Адрес.

Я попытался организовать с Excel, и я потерян. Я новичок и ищу учиться!

Chris
778-222-2445
17 Main Street
Clinton, OH
9 Miles

John
772-022-2022
411 Oxford Street
Miami, FL
15 Miles

Chris    778-222-2445    17 Main Street Clinton, OH 9 Miles
John     772-022-2022    411 Oxford Street Miami, FL 15 Miles

и так далее ...

Ответы [ 4 ]

0 голосов
/ 14 января 2019
import sys
import csv
import xlsxwriter

# if we read f.csv we will write f.xlsx
wb = xlsxwriter.Workbook(sys.argv[1].replace(".csv",".xlsx"))
ws = wb.add_worksheet("WS1")    # your worksheet title here
with open(sys.argv[1],'r') as csvfile:
    table = csv.reader(csvfile)
    i = 0
    # write each row from the csv file as text into the excel file
    # this may be adjusted to use 'excel types' explicitly (see xlsxwriterdoc)
    for row in table:
        ws.write_row(i, 0, row)
        i += 1
wb.close()

Это может помочь вам на основе каждого четырех столбца изменить количество строк в Excel и увеличить одно число для строки CSV, чтобы ваш следующий элемент записал следующий лист.

0 голосов
/ 14 января 2019

Функция OFFSET может быть полезна здесь. Предполагая, что ваши исходные данные находятся в столбце A, начиная с A1, мы можем использовать эту формулу для нового столбца имени:

=OFFSET($A$1,(ROW()-1)*6,0)

Затем просто скопируйте эту ячейку (где бы она ни находилась) вниз по столбцу, чтобы включить все имена из исходных данных.

Логика этой формулы в том, что она сначала берет A1, что является первым именем. Затем первая вставка получит доступ к смещению A1 на 6 строк, что соответствует второму имени и т. Д.

Вы можете использовать аналогичные формулы для других 4 полей ваших данных.

Edit:

Основываясь на комментариях Рона ниже, вы можете вместо этого использовать:

=(ROW()-1)*6+COLUMNS($A:A)

Эту формулу не нужно пересчитывать всякий раз, когда формула / данные в вашем рабочем листе изменяются.

0 голосов
/ 14 января 2019

Этот код преобразует ваш файл в строки, разделенные плоским пробелом

with open('file.txt') as f:
  record = []
  for line in f:  # iterate through file
    line = line.strip() # remove useless endings
    if line: # data on line?
      record.append(line)
    else:  # empty line => next record
      if record:  # avoid printing if we had several empty lines
        print (' '.join(record))
      record = []  # create new record
  # there could be no empty line at EOF
  if record:  # avoid printing if we had several empty lines
    print (' '.join(record))
0 голосов
/ 14 января 2019

Если это один столбец, то на самом деле это не файл CSV (то есть, значения, разделенные запятыми). Вам нужно будет извлечь каждую строку данных и интерпретировать, какого рода данные они основаны на их позиции в файле. Для этого потребуется, чтобы в каждом наборе было 5 строк данных, или вам придется интерпретировать их на основе найденных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...