Python CSV Writer修剪前导零

Python CSV Writer trimming leading zeros

我正在用python读取一个csv文件,更改一些值,然后将其写回。我阅读文件时使用:

1
2
3
bomReader = csv.reader( open( args.filename, 'rb' ), delimiter=',' )
for row in bomReader:
    #do stuff

其中一个字段包含值,如0406,其中前导零非常重要。读取csv文件后,如果我使用print row[2]打印此字段,它将以0开头正确显示。

然而,当我把它写回新的csv文件时,输出没有前导零。我想这是因为它被认为是一个int,前导零被修剪了。由于我不能在csv.writer writerow()函数中使用格式说明符,如何正确地防止这种行为?

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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文件中的示例行:

1
1007,C,0406,2,C456;C219,ANY,,,,,,

输出csv文件中的行:

1
2
1007,C,406,1,C456,ANY,,,,
1007,C,406,1,C219,ANY,,,,


您提供的代码在Python 2.6.7Python 2.7.2csv.__version=='1.0'下工作正常。输出:

1
2
1007,C,0406,1,C456,ANY,,,,
1007,C,0406,1,C219,ANY,,,,