【发布时间】:2015-12-04 23:28:55
【问题描述】:
我需要从列表中获取信息,并从名称中获取add a column year。我仍然不确定如何在记录中添加一个字段'year'。 我可以使用追加吗?
关于输出文件,我只需要使用outputcsv.writerow(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 )
输出文件如下:
2010,Lola,69,Girl
然后输入,我有 5 个文件 babyQld2010.csv, babyQld2011.csv, babyQld2012.csv, babyQld2012.csv, babyQld2014.csv,其中包含:
Mia,425,William,493
我必须按格式对其进行排序,我已经完成并保存在列表中'records'
Lola,69,Girl
现在我需要添加一个字段'year' on 'record'列表并导出csv file。
这是我的完整代码:
import csv
def extract_names(filename):
''' Extract babyname, count, gender from a csv file,
and return the data in a list.
'''
inFile = open(filename, 'rU')
csvFile = csv.reader(inFile, delimiter=',')
# Initialization
records = []
rowNum = 0
for row in csvFile:
if rowNum != 0:
# +++++ You code here ++++
# Read each row of csv file and save information in list 'records'
# as (name, count, gender)
records.append([row[0], row[1], "Female"])
records.append([row[2], row[3], "Male"])
print('Process each row...')
rowNum += 1
inFile.close()
return(records)
#### Start main program #####
filenames = ('babyQld2010.csv',
'babyQld2011.csv',
'babyQld2012.csv',
'babyQld2012.csv',
'babyQld2014.csv')
with open('babyQldAll.csv','w') as outFile:
csvFile_out = csv.writer(outFile, delimiter=',')
for filename in filenames:
name, ext = filename.split('.')
year = name.split('.')[0][-4:] #extract year from file names
records = extract_names(filename)
for record in records:
csvFile_out.write([year] + record)
print("Write in csv file...")
outFile.close()
【问题讨论】:
-
您能否展示一下您的程序的输入/输出示例?
-
python 提供
csv能力:docs.python.org/2/library/csv.html