2

UNIX時間を表すfloat変数obj ["time"]があります。以前は結果をテキストファイルに書き込んでいたので、

  fd_out.write("%.6f\n" %(obj["time"])) 

結果が 6 桁になるように強制します。しかし、代わりに結果をcsvファイルに出力したいので、次を使用しました:

  writer.writerow((obj["time"]))

結果にはデフォルトで 2 桁しかありません。どうすれば変更できますか?

4

3 に答える 3

3

次の例のように、中間形式を使用すると問題が解決するはずです。

writer.writerow(("%.6f" % obj["time"], ))
于 2012-07-09T16:41:30.610 に答える
1

ファイルに直接書き込んでいたときに、float 変数を必要な桁数の文字列に変換するフォーマット操作を行いました。CSV ライターでもまったく同じことができます。

writer.writerow("%.6f" %(obj["time"]))

コメントで指摘されているように、CSV ライターが改行を追加するため、改行を省略する必要があります。

于 2012-07-09T16:43:43.077 に答える
1

Specifyingformating for csv.writer in Pythonの以前の回答から:

class TypedWriter:
    """
    A CSV writer which will write rows to CSV file "f",
    which uses "fieldformats" to format fields.
    """

    def __init__(self, f, fieldnames, fieldformats, **kwds):
        self.writer = csv.DictWriter(f, fieldnames, **kwds)
        self.formats = fieldformats

    def writerow(self, row):
        self.writer.writerow(dict((k, self.formats[k] % v) 
                                  for k, v in row.iteritems()))

    def writerows(self, rows):
        for row in rows:
            self.writerow(row)
于 2012-07-09T16:44:51.313 に答える