Python CSV编写器修剪前导零
我正在阅读python中的csv文件,更改了一些值,并将其写回。 我在文件中使用:
bomReader = csv.reader( open( args.filename, 'rb' ), delimiter=',' )
for row in bomReader:
#do stuff
其中一个字段包含0406
,其中前导零是重要的。 在读取csv文件后,如果使用say print row[2]
打印此字段,则它会以前导0正确显示。
但是,当我将其写回新的csv文件时,输出没有前导零。 我认为这是因为它被认为是一个整数,前导零被修剪。 由于我无法在csv.writer writeRow()函数中使用格式说明符,因此防止此行为的正确方法是什么?
码:
bomReader = csv.reader( open( args.filename, 'rb' ), delimiter=',' )
bomWriter = csv.writer(open(outfile, 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in bomReader:
try:
qty = int(row[3])
if (qty > 0):
cs = row[4].split(';')
for each in cs:
bomWriter.writerow([row[0],row[1], row[2],'1',each.strip(),row[5],row[6],row[7],row[8],row[9]])
elif (qty == 0):
print "Deleted line"
else:
bomWriter.writerow(row)
except ValueError:
bomWriter.writerow(row)
来自输入csv文件的示例行:
1007,C,0406,2,C456;C219,ANY,,,,,,
输出csv文件中的行:
1007,C,406,1,C456,ANY,,,,
1007,C,406,1,C219,ANY,,,,
您提供的代码在Python 2.6.7
和Python 2.7.2
, csv.__version=='1.0'
下可以正常工作。 输出:
1007,C,0406,1,C456,ANY,,,,
1007,C,0406,1,C219,ANY,,,,
链接地址: http://www.djcxy.com/p/55087.html