2016-01-22 2 views
0

У меня есть макет для данных:Раздельное один столбец несколько в формате CSV

experiences: [{ 
     company: String, 
     title: String, 
     description: String, 
     startDate: Date, 
     endDate: Date 
    }], 

и мне нужно записать данные в формате CSV в этом формате, но я не позволил это сделать. Это должно быть как в excel.

enter image description here

Если я выбираю заголовок Expirience мне нужно, чтобы получить все заголовки (компания, название, описание, STARTDATE, ENDDATE) и все данные. Кроме того, мне нужно иметь возможность выбрать подзаголовок и его данные.

Можно ли это сделать в csv?

+0

Его легко записать в csv, но это всего лишь формат файла. Вы говорите «если я выбираю заголовок» ... что вы имеете в виду «выбрать»? Вы думаете о графическом интерфейсе или что-то в этом роде? – tdelaney

+0

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

ответ

1

Если вы хотите, чтобы записать данные в файл CSV:

import csv 
import operator 

data = operator.itemgetter('company', 'title', 'description', 'startDate', 'endDate') 

with open('path/to/output', 'w') as fout: 
    outfile = csv.writer(fout) 
    for e in experiences: 
     outfile.writerow([str(d) for d in data(e)]) 

Если вы хотите прочитать конкретные данные столбца из CSV файла:

import csv 
import operator 

data = operator.itemgetter(0,3,4) # or whichever columns you want 
experiences = [] 
keys = 'company startDate endDate'.split() # the column headers of those columns 
with open('path/to/csv') as infile: 
    for _ in range(2): infile.readline() 
    for row in csv.reader(infile): 
     experiences.append(dict(zip(keys, data(row)))) 
+1

Его отличный способ написать csv, но OP говорит о выборе подзаголовков и получении столбца данных. – tdelaney

0

Существуют различные определения (и стандарты) для «CSV», поэтому не совсем понятно, что вы просите, но если вы хотите встраивать данные из нескольких столбцов в один столбец CSV-файла, то это обычно можно сделать, выбрав подходящий отдельный разделитель полей для встроенных данных.

Например, если запятые используются для разделителя верхнего уровня, часто бывает удобно использовать символ «pipe» («|») в качестве разделителя следующего уровня. В вашем случае кажется маловероятным, что встроенные атрибуты (компания, название, описание и даты) сами будут содержать символ канала, поэтому труба, вероятно, будет разумным выбором, хотя было бы разумно включить программное обеспечение для обеспечения значений «каким-то образом» дезинфицируются.

В целом, при выборе пары разделительных символов необходима определенная осторожность. Если запятая/труба не работает, возможно, tab/pipe будет.