2016-01-22 75 views
0

我對數據的佈局:單獨一列數以CSV

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

,我需要這種格式來寫CSV數據,但我不是有可能做到這一點。它必須像在Excel中一樣。

enter image description here

如果讓我選擇頭的expirience我需要讓所有的標題(公司,標題,描述,的startDate,結束日期),所有的數據。此外,我需要有機會選擇subheader及其數據。

可以在csv中做什麼?

+0

它很容易在csv中編寫它,但這只是一種文件格式。你說「如果我選擇標題」...你是什麼意思「選擇」?你在想GUI嗎? – 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」(「|」)字符作爲下一級分隔符很方便。就你而言,嵌入式屬性(公司,標題,描述和日期)本身不會包含管道字符,所以管道可能是一個明智的選擇,儘管包含確保值的軟件是明智的選擇是以某種方式「消毒」的。

通常,選擇一對分隔符時需要注意。如果逗號/管道不起作用,那麼也許標籤/管道會。