在python中将列表保存到带有两位小数的csv?

mar*_*arc 4 python csv significant-digits

我的数据看起来像

[('A',5.3748),('B',8.324203),('C',3.492)]
Run Code Online (Sandbox Code Playgroud)

我将其保存为 csv 文件,其中包含以下几行:

with open('output.csv','wb') as fp:
    a = csv.writer(fp,delimiter = ",")
    a.writerows(data)
Run Code Online (Sandbox Code Playgroud)

工作起来就像一个魅力,只是我想只用两位小数来显示我的值。在我的代码的前面,我压缩两个列表来获取数据。所以如果需要的话我可以提前做出改变。

谢谢!

Mar*_*ard 6

您可以使用字符串格式化语法:

with open('output.csv','wb') as fp:
    a = csv.writer(fp,delimiter = ",")
    a.writerows(map(lambda t: (t[0], "%.2f" % t[1]), data))
Run Code Online (Sandbox Code Playgroud)

技巧就在这里:

>> "%.2f" % a_number
Run Code Online (Sandbox Code Playgroud)

将打印带有两位小数的数字,而

map(lambda t: (t[0], "%.2f" % t[1]), data)
Run Code Online (Sandbox Code Playgroud)

将此转换应用于列表中的每个元组data。(参见http://docs.python.org/2/library/functions.html#map