这是我的数据:
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,“ 1985年7月1日”,“ 1986年6月30日”,“ A03AH000859”,“公共卫生学校”
2,3000012,“ 1985年7月1日”,“ 1986年6月30日”,“ A03AH000860”,“公共卫生学校”
3,3000013,“ 1985年7月1日”,“ 1986年6月30日”,“ 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”,“ 1985年7月1日”,“ 1986年6月30日”,“ A03AH000859”,“公共卫生学校”
“ 2”,“ 3000012”,“ 1985年7月1日”,“ 1986年6月30日”,“ A03AH000860”,“公共卫生学校”
“ 3”,“ 3000013”,“ 1985年7月1日”,“ 1986年6月30日”,“”,“ A03AH000861”,“公共卫生学校”
最佳答案
您可以使用以下方法将整数字段转换为整数值:
for row in reader:
row = [int(x) if re.match(r'-?\d+$', x) else x for x in row]
writer.writerow(row)
只需添加
import re
在程序开始时。