2016-01-22 109 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”(“|”)字符作为下一级分隔符很方便。就你而言,嵌入式属性(公司,标题,描述和日期)本身不会包含管道字符,所以管道可能是一个明智的选择,尽管包含确保值的软件是明智的选择是以某种方式“消毒”的。

通常,选择一对分隔符时需要注意。如果逗号/管道不起作用,那么也许标签/管道会。