如何使用混合数据类型将浮点数格式化为2个小数点? 我正在获取一个表并将行写入csv文件。 我的数据是(string,string,float,float,float ...)
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位是字符串,它会给我一个类型错误。
谢谢。
答案 0 :(得分:1)
你需要在Python中使用list comprehension和ternary if-else来改变'result'列表。
result = [x if type(x) is str else format(x,'.2f') for x in result]
答案 1 :(得分: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]