2015-04-01 31 views
-4
import csv 
a = ['679L', 'Z60', '033U', '0003'] 
z = csv.writer(open("test1.csv", "wb")) 
z.writerow(a) 

考慮上面的代碼如何寫一個數字作爲文本,而在csv文件在python寫

輸出:

676L Z60 33U 3 

我需要得到它在文本格式本身

676L Z60 033U 0003 

如何做到這一點。

+0

您發佈的代碼的輸出已經是您所期望的。你用什麼工具打開CSV文件? – 2015-04-01 10:38:48

+0

我得到的輸出爲676L Z60 33U 3 :( – 2015-04-01 10:41:46

+2

但是這不是* * * * * * Python寫入'0003'。 – 2015-04-01 10:42:30

回答

0

Python的csv模塊不治療字符串作爲寫入文件時數:

>>> import csv 
>>> from StringIO import StringIO 
>>> a = ['679L', 'Z60', '033U', '0003'] 
>>> out = StringIO() 
>>> z = csv.writer(out) 
>>> z.writerow(a) 
>>> out.getvalue() 
'679L,Z60,033U,0003\r\n' 

如果您在其他一些工具閱讀你需要修復工具時看到3; Python在這裏沒有錯。

您可以指示csv.writer()將任何非數字的引號括起來;這可能使任何讀取您的CSV,該列不是數字更清晰。設置quotingcsv.QUOTE_NONNUMERIC

>>> out = StringIO() 
>>> z = csv.writer(out, quoting=csv.QUOTE_NONNUMERIC) 
>>> z.writerow(a) 
>>> out.getvalue() 
'"679L","Z60","033U","0003"\r\n' 

但這不會防止Excel處理列數字反正

如果您正在將此加載到Excel中,請不要使用打開功能。請改爲創建一個新的空白工作表,然後使用導入功能。這將讓你指定一個列爲文本而不是通用