簡體   English   中英

Python CSV Writer修剪前導零

[英]Python CSV Writer trimming leading zeros

我正在讀取python中的csv文件,更改一些值,然后將其寫回。 我使用以下文件讀取了文件:

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()函數中使用格式說明符,因此防止這種行為的正確方法是什么?

碼:

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.7Python 2.7.2csv.__version=='1.0'下可以正常工作。 輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM