3

次のようなデータがあります

[('A',5.3748),('B',8.324203),('C',3.492)]

次の行でcsvに保存しています:

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

値を 2 桁の 10 進数だけで表示したいことを除けば、魅力的に機能します。コードの前半で、データを取得するために 2 つのリストを圧縮しました。そのため、必要に応じて事前に変更を加えることができます。

ありがとう!

4

6 に答える 6

2

丸めたい数値を分離できる場合は、小数点以下 2 桁にフォーマットして、次のように文字列として保存できます。

"%.2f" % myNum
于 2013-10-07T14:24:02.087 に答える
1
from itertools import imap
with open('output.csv','wb') as fp:
  a = csv.writer(fp,delimiter = ",")
  a.writerows(imap(lambda x: (x[0], round(x[1], 2)), data))
于 2013-10-07T14:25:08.730 に答える
1

を使用して小数をフォーマットしてみてくださいstr.format()

temp = [('A',5.3748),('B',8.324203),('C',3.492)]
newlist = []
for a, b in temp:
    newlist.append((a, "{0:.2f}".format(b)))

リスト内包表記として、次のようになります。

data = [('A',5.3748),('B',8.324203),('C',3.492)]
data = [(a, "{0:.2f}".format(b)) for a, b in temp]

@JonClementsが指摘したように、に置き換えることができ"{0:.2f}".format(b)ますformat(b, '.2f')。この場合、おそらくそれがより読みやすいアプローチです。

于 2013-10-07T14:25:10.373 に答える
0

次のようにリスト要素をフォーマットできます

linux:~ # python
>>> l=[('A',5.3748),('B',8.324203),('C',3.492)]
>>> l=[ (x[0], "%.2f" % x[1]) for x in l]
>>> l
[('A', '5.37'), ('B', '8.32'), ('C', '3.49')]
于 2013-10-07T14:31:41.273 に答える