2012-07-07 65 views
2

在Python 3.2中將數字拆分爲前3位數和後2位等數字後,有什麼方法可以顯示前導零?我的腳本返回的數字,沒有前導零...如何在Python中拆分數字後顯示前導零

我有一個CSV文件看起來像這樣:

Name,Code 
blackberry,20001 
wineberry,02002 
rasberry,30000 
blueberry,03010 

我想要的輸出:

Name,Code,Code1,Code2 
blackberry,20001,200,01 
wineberry,02002,020,02 
rasberry,30000,300,00 
blueberry,03010,030,10 

我的腳本:

import csv 
all = [] 
with open('aaa.csv','r') as csvinput: 
    with open('bbb.csv', 'w') as csvoutput: 
     reader = csv.reader(csvinput,delimiter=',') 
     writer = csv.writer(csvoutput,delimiter=",", lineterminator='\n') 
     row = next(reader) 
     row.append('Code1') 
     row.append('Code2') 
     all.append(row) 
     for row in reader: 
      row.append(row[1][0:2]) 
      row.append(row[1][-2:]) 
      all.append(row) 
     writer.writerows(all) 
     print(all) 

以上腳本返回:

Name,Code,Code1,Code2 
blackberry,20001,200,1 
wineberry,02002,20,2 
rasberry,30000,300,0  
blueberry,03010,30,10 

回答

6

csv.writer不會將字符串轉換爲數字類型,因此它不會導致您所看到的錯誤。

我希望您正在Excel中查看您的csv文件,它將字符串轉換爲數字,只要它可以。在文本編輯器中查看你的輸出結果,你應該看到前面的零實際在那裏。

另外,正如其他人指出你的第一個切片應該是row[1][0:3]

+2

+1對OP的輸出來自哪裏的第一個很好的解釋! – DSM 2012-07-07 14:54:34

+0

是的,我正在Excel中查看csv。所以你不可能把數字保存在csv中的字符串中?至於切片,這是我的錯誤。對於混淆 – fairyberry 2012-07-07 15:38:26

+0

我現在遠離Windows機器,但我相信你可以在csv文件上使用文本導入嚮導。 – 2012-07-07 15:46:34

2

我看不出你的代碼是如何產生這個輸出的。但是糾正拼寫錯誤,改變for環路

for row in reader: 
     row = [r.strip() for r in row] 
     row.append(row[1][0:3]) 
     row.append(row[1][3:]) 
     all.append(row) 

應該工作,無論錯誤的空白可能在一行的末尾導致問題的:

localhost-2:coding $ more bbb.csv 
Name,Code,Code1,Code2 
blackberry,20001,200,01 
wineberry,02002,020,02 
raspberry,30000,300,00 
blueberry,03010,030,10 

PS:使用all爲變量名是一個壞主意。這是一個非常方便的內置的名稱。

+0

我試過了腳本。我也改變了所有的abc,但仍然沒有返回前導零.. – fairyberry 2012-07-07 15:25:18

+0

什麼是「不返回前導零」呢?它正在生成一個文件。該文件包含一個零或它不包含,並且我願意承擔它的好處。你在Excel中查看文件,就像@StevenRumbalski猜到的一樣? – DSM 2012-07-07 15:28:06

+0

感謝您的幫助。問題解決了! – fairyberry 2012-07-07 16:23:34

相關問題