2017-05-03 135 views
0

我開發了一個生成CSV文件的腳本。在檢查文件時,某些單元格被解釋爲不是我想要的方式。格式化CSV的數字

E.g在Python中的列表中,'02e4'的值被自動格式化爲2.00E + 04。

table = [['aa02', 'fb4a82', '0a0009'], ['02e4, '452ca2', '0b0004']] 


ofile = open('test.csv', 'wb') 
for i in range(0, len(table)): 
    for j in range(0, len(table[i]): 
      ofile.write(table[i][j] + ",") 
    ofile.write("\n") 

這給了我:

aa02   fb4a82 0a0009 
2.00E+04  452ca2 0b0004 

我使用csv.writer,而不是試圖在那裏writer = csv.writer(ofile, ...) 從LIB(如csv.QUOTE_ALL)...但它同樣給屬性輸出像以前一樣..

有沒有一種方法使用CSV庫自動格式化所有我的值作爲字符串之前,它被寫入?

或者這是不可能的?

感謝

回答

0

嘗試在你的CSV作家設置報價參數csv.QUOTE_ALL。 更多信息,請參見doc

import csv 
with open('myfile.csv', 'wb') as csvfile: 
    wtr = csv.writer(csvfile, quoting=csv.QUOTE_ALL) 
    wtr.writerow(...) 

雖然這聽起來像問題可能在於您的CSV觀衆。 Excel有一個相當煩人的習慣,像你所描述的那樣自動格式化數據。

+0

它不工作..嘗試: 表= [ 'EE02' ,''ffsssd'],['02e4','00009']] with open('myfile.csv','wb')as csvfile: writer = csv (0,len(table [i])): csvfile.write(table [i]).writer(csvfile,quoting = csv.QUOTE_ALL) for i in range(0,len(table)): ] [j] +「,」) csvfile.write(「\ n」)它的生成02e4仍然是2。00E + 04 – arsenal88

+0

這樣的代碼段在註釋中不起作用,您應該嘗試編輯您的問題。但問題是你沒有用csv編寫器寫入文件。而不是'csvfile.write(...)',使用'writer.writerow()'。閱讀我鏈接到的文件。 – Anddrrw

+0

我也試過用writer.writerow(),輸出也完全一樣:( – arsenal88

0

如果你想'02e4'在excel中顯示爲「02e4」,那麼煩人的是你必須用三雙引號寫出csv:「」「02e4」「」。我不知道用csv編寫器做這件事的方法,因爲它將你的引用字符限制爲一個字符。然而,你可以做同樣的事情你原來的嘗試:

table = [['aa02', 'fb4a82', '0a0009'], ['02e4', '452ca2', '0b0004']] 

ofile = open('test.csv', 'wb') 
for i in range(0, len(table)): 
    for j in range(len(table[i])): 
      ofile.write('"""%s""",'%table[i][j]) 
    ofile.write("\n") 

如果在文本編輯器打開CSV文件將讀取:

"""aa02""","""fb4a82""","""0a0009""", 
"""02e4""","""452ca2""","""0b0004""", 

這將產生在Excel以下結果:

Excel Double Quote Example Image

如果您想使用任何單個字符的引用,您可以使用csv模塊,如下所示:

import csv 

table = [['aa02', 'fb4a82', '0a0009'], ['02e4', '452ca2', '0b0004']] 
ofile = open('test.csv', 'wb') 
writer = csv.writer(ofile, delimiter=',', quotechar='|',quoting=csv.QUOTE_ALL) 
for i in range(len(table)): 
    writer.writerow(table[i]) 

在文本編輯器的輸出將是:

|aa02|,|fb4a82|,|0a0009| 
|02e4|,|452ca2|,|0b0004| 

和Excel會顯示:

Excel Pipe Quote Example Image