2016-07-22 194 views
0

如何使用混合數據類型將浮點數格式化爲2個小數點? 我正在讀取表格並將行寫入csv文件。 我的數據是(字符串,字符串,浮球,浮球,浮球......)Python使用字符串和浮點數格式化CSV並寫入

sql = 'select * from testTable' 
    c.execute(sql) 

    columnNames = list(map(lambda x: x[0], c.description)) 
    result = c.fetchall() 

    with open(outputCSVPath, 'wb') as f: 
     writer = csv.writer(f) 
     writer.writerow(columnNames) 
     writer.writerows(result) 

與上面的代碼,我與6位小數浮動。我需要將其格式化爲2位小數,但由於列表的前2位是字符串,因此會給我一個類型錯誤。

謝謝。

回答

1

可以遍歷結果,以便僅僅解析浮動值,然後你可以使用writer.writerows(row)按行寫一行。看看here瞭解迭代你的results的不同方法。

另一方面,您可以使用python中的round()函數將浮點數格式化爲兩位小數點。

一個例子:

>>> # Each of your rows should be something like: 
>>> list = ["string1", "string3", 1.435654, 4.43256] 

>>> #Round the floats 
>>> parsed_list = [round(x, 2) if i > 1 else x for i, x in enumerate(list)] 

>>> print parsed_list 
['string1', 'string2', 1.44, 4.43] 
1

您需要在Python中使用list comprehension和ternary if-else來更改'result'列表。

result = [x if type(x) is str else format(x,'.2f') for x in result]