在csv中将一列分成几列

时间:2016-01-22 04:23:49

标签: python csv

我有数据布局:

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

我需要以这种格式在csv中写入数据,但我不能这样做。它必须像excel一样。

enter image description here

如果我选择标题expirience,我需要获取所有标题(公司,标题,描述,startDate,endDate)和所有数据。此外,我需要有机会选择subheader及其数据。

是否可以在csv中进行?

2 个答案:

答案 0 :(得分: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 :(得分:0)

" CSV"有各种各样的定义(和标准)。所以它并不完全清楚你在问什么,但是如果你想在CSV文件的单个列中嵌入多列数据,那么通常可以通过选择合适的不同字段分隔符来完成。嵌入数据。

例如,假设逗号用于"顶级"分离器,使用管道通常很方便" (" |")将字符作为下一级别分隔符。在您的情况下,嵌入式属性(公司,标题,描述和日期)似乎不太可能包含管道字符,因此管道可能是一个明智的选择,尽管包含用于确保值的软件是明智的。正在消毒"以某种方式。

通常,在选择一对分隔符时需要注意。如果逗号/管道不起作用,则可能是tab / pipe。