2014-01-29 48 views
5

我有浮點數的列表,其格式爲:寫浮動列表csv文件

float_list = [1.13, 0.25, 3.28, ....] 

我用下面的代碼寫入到一個.csv文件:

float_str = "" 

for result in result_list: 
    float_str = float_str + str(result.get_value()) + "," 

with open(output_path, "wb") as file: 
    writer = csv.writer(file) 
    writer.writerow(float_str) 

file.close() 

其中result.get_value()是:

def get_value(): 
    return float(value) 

我希望看到,在每個小區,有一個值。不過,我得到的是:

1 . 1 3 , 0 . 2 5 , 3 . 2 8 , 

看來每個數字都佔據一個單元格。

所以,我可以知道我該如何解決這個問題,並得到我的預期?

回答

7

writer.writerow()需要序列(列表或元組),但你傳遞一個字符串代替。通過傳遞一個字符串,writer.writerow()仍然將其視爲爲序列,每一個個性成爲列值:

1,.,1,3,,,0,.,2,5,,,3,.,2,8 

而且,該方法轉換列字符串,不這樣做你自己。

而是建立自己的浮點值的列表,並把它傳遞:

row = [] 
for result in result_list: 
    row.append(result.get_value()) 

with open(output_path, "wb") as file: 
    writer = csv.writer(file) 
    writer.writerow(row) 

甚至:

with open(output_path, "wb") as file: 
    writer = csv.writer(file) 
    writer.writerow([r.get_value() for r in result_list]) 

分隔符默認爲,

+0

你說你不需要做這個轉換,但是在這個例子中留下什麼?我認爲整個'row'這個東西是多餘的......'writer.writerow(result_list)'(通過OP的'get_value()') –

+0

@JonClements:那麼至少'writer.writer([r.get_value ()for result_list])'是必需的。 –

5

使用delimiter和只寫你並不需要將其轉換爲字符串列表:

import csv 

float_list = [1.13, 0.25, 3.28] 

with open(output_path, "wb") as file: 
    writer = csv.writer(file, delimiter=',') 
    writer.writerow(float_list) 

輸出:

1.13,0.25,3.28

也有是不需要關閉該文件,因爲您使用了with

編輯:

@Martijn皮特斯:分隔符,是默認的。

Docs

用於分隔字段一個字符的字符串。它默認爲','。

此行writer = csv.writer(file, delimiter=',')可以writer = csv.writer(file)

+0

'定界符= '''是默認的。 –

+0

@Martijn彼得你是對的,我已經編輯了答案。 –

-1

我只想寫一個數字,比如1234,成csv文件(delimiter=' '),它結束了類似1 2 3 4 我從另一個網站下面的答案,但想在這裏分享:

number = 1.13 
writer.writerow([number])