阅读CSV文件并在数据项

时间:2016-01-22 22:27:43

标签: python csv

这是我的数据:

  

ID,APPLICATION_ID,award_notice_date,budget_start,budget_end,core_project_num,ed_inst_type   1,3000011,7 / 1 / 1985,6 / 30/1986,A03AH000859,公共卫生学院   2,3000012,7 / 1 / 1985,6 / 30/1986,A03AH000860,公共卫生学院   3,3000013,7 / 1 / 1985,6 / 30/1986,A03AH000861,公共卫生学校

我想要的是:

  

“ID”, “APPLICATION_ID”, “budget_start”, “budget_end”, “core_project_num”, “ed_inst_type”   1,3000011,“7/1/1985”,“6/30/1986”,“A03AH000859”,“公共卫生学校”   2,3000012,“7/1/1985”,“6/30/1986”,“A03AH000860”,“公共卫生学校”   3,3000013,“7/1/1985”,“6/30/1986”,“A03AH000861”,“公共卫生学校”

这是我的代码:

import csv

import sys


input_file = str(sys.argv[1])

output_file = str(sys.argv[2])


ifile  = open(input_file)

reader = csv.reader(ifile)

ofile  = open(output_file, 'w')

writer = csv.writer(ofile, delimiter=',', quoting=csv.QUOTE_NONNUMERIC)

for row in reader:

       writer.writerow(row)

问题: 为所有数据添加双引号(包括数字和非数字数据)

  

“ID”, “APPLICATION_ID”, “budget_start”, “budget_end”, “core_project_num”, “ed_inst_type”   “1”,“3000011”,“7/1/1985”,“6/30/1986”,“A03AH000859”,“公共卫生学校”   “2”,“3000012”,“7/1/1985”,“6/30/1986”,“A03AH000860”,“公共卫生学校”   “3”,“3000013”,“7/1/1985”,“6/30/1986”,“”,“A03AH000861”,“公共卫生学校”

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容将整数字段转换为整数值:

for row in reader:
    row = [int(x) if re.match(r'-?\d+$', x) else x for x in row]
    writer.writerow(row)

只需添加

import re

在您的计划开始时。