【发布时间】:2015-05-20 06:21:09
【问题描述】:
我正在尝试从几个不同的 csv 文件中提取数据并将其插入到 1 个 CSV 文件中,但我无法为每个字段创建一个具有特定名称的列表(记录)。
原始文件格式: [女孩名,女孩名数,男孩名,男孩名数]
输出: [姓名、人数、性别]
我目前的代码是:
import csv
def extract_names(filename):
inFile = open(filename, 'rU')
csvFile = csv.reader(inFile, delimiter=',')
# Initialization
records = []
rowNum = 0
for row in csvFile:
if rowNum != 0:
# Read each row of csv file and save information in list 'records'
# as (name, count, gender)
records.append(name, count, gender)
print('Process each row...')
rowNum += 1
inFile.close()
return(records)
启动主程序
filenames = ('babyQld2010.csv', 'babyQld2011.csv', 'babyQld2012.csv', 'babyQld2012.csv', 'babyQld2014.csv')
outFile = open('babyQldAll.csv','w')
csvFile_out = csv.writer(outFile, delimiter=',')
for filename in filenames:
name, ext = filename.split('.')
year = name[-4:] #extract year from file names
records = extract_names(filename)
# Get (name, count, gender) from list "records",
# and add value of "year" and write into output file (using "for" loop )
print("Write in csv file...")
outFile.close()
【问题讨论】:
-
相同的姓名/性别组合是否会出现在多个文件中,如果发生这种情况,您想添加计数吗?
-
是的,它出现在所有初始文件中,无需考虑重复项(如果这就是您的要求)
-
您似乎跳过了第一行。第一行是标题吗?你试过 csv.ReadDict 吗?
-
第一行不需要,因为在原始文件中它是:[女孩姓名,女孩姓名计数,男孩姓名,男孩姓名计数],当我(未来)写入另一个 csv i希望他们是:[姓名、人数、性别]
-
如果您的目标也是 csv,那么您可以将记录中的数据附加为一行以逗号分隔的名称、计数和性别值作为 records.append(name+','+count+' ,'+性别)