如何使用混合数据类型将浮点数格式化为 2 个小数点?我正在获取一个表并将行写入 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 个是字符串,它给了我一个类型错误。
谢谢你。
您可以迭代结果以仅解析浮点值,然后您可以使用writer.writerows(row)
逐行写入。看看这里,了解迭代您的results
.
另一方面,您可以使用round()python 中的函数将浮点数格式化为两位小数。
一个例子:
>>> # 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]