【发布时间】:2018-10-09 18:11:20
【问题描述】:
我正在使用 csv 库在所有非数字值周围应用双引号。 我的来源中的一列是美国邮政编码。
我的源文件如下所示。
CustomerId,CustomerName,Street ,City,State,Zip Code
513916,Indian Tribal Council,1487 S. RESERVATION ROAD,PORTERVILLE,CA,93257
1176103,Iberdrola USA,100 MAIN STREET,New Gloucester,ME,04260
一旦我在文件上应用了 csv 代码。
文件开始看起来像这样。
"CustomerId","CustomerName","Street ","City","State","Zip Code"
513916,"Tule River Indian Tribal Council","1487 S. RESERVATION ROAD","PORTERVILLE","CA",93257
1176103,"Iberdrola USA","100 MAIN STREET","New Gloucester","ME",4260
这是代码,我正在使用:
with open('C:\\Temp\\inputfile.csv', 'rb') as f_input, \
open('C:\\Temp\\outputfile.csv', 'wb') as f_output:
csv_input = csv.reader(f_input, skipinitialspace=True)
csv_output = csv.writer(f_output, quoting=csv.QUOTE_NONNUMERIC)
for row_input in csv_input:
row_output = []
for col in row_input:
try:
row_output.append(int(col))
except ValueError, e:
row_output.append(col)
csv_output.writerow(row_output)
是否有任何修复方法可以保留输入文件中的前导零?
【问题讨论】:
-
csv没有丢弃前导零。你是。你为什么打电话给int? -
另外
except ValueError, e在 Python 3 中无效,因此您可能运行的不是您认为的 Python 版本。 -
它仍然将这些值视为整数。尝试写整行。除非您想过滤掉某些列,否则迭代行中的每个列并追加都无济于事
标签: python python-2.7 csv