0

csvファイルをインポートしていますが、価格の1つにゼロがありません。

必要な出力: 12.10

現在の出力: 12.1

データにゼロを含めるにはどうすればよいですか?

私がこれまでにしたこと:

#!/usr/bin/python

import csv
import sys
import argparse

#parsing command line options
parser = argparse.ArgumentParser(prog='desc', description=__doc__)
parser.add_argument('-i', '--input', help='Input file', nargs='?', type=argparse.FileType('r'), default=sys.stdin)
parser.add_argument('-o', '--output', help='Output file', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
args = parser.parse_args(sys.argv[1:])
inf, outf = args.input, args.output
outf = csv.writer(outf)

print 'Loading %s file into memory' % inf.name
data = []
tmp = 0.00
for i, line in enumerate(csv.reader(inf)):
    if i == 0:
        outf.writerow(line)
        continue
    price = line[4]
    price = price.replace('.', '')
    # print price
    if (price < 100):
        tmp = price
        tmp = tmp * 10
        print tmp
4

4 に答える 4

5

floatを小数点以下2桁の文字列としてフォーマットします。

>>> '{:.2f}'.format(12.1)
'12.10'

enumeratePS:ファイルのヘッダーをスキップcsvして出力にそのように書き直すためにheavy関数を使用する必要はありません。最初の行を直接書くことができます:

csvin = csv.reader(inf)
outf.writerow(csvin.next())  # header line 1
for line in csvin:  # iterator goes on from line 2
    price = line[4]
    #...
于 2012-05-27T21:22:04.383 に答える
3

2つのオプション:

  1. 。など、小数点以下の桁数が重要なタイプを使用しdecimal.Decimalます。

  2. 今のところ無視し、出力では、などの小数点以下2桁を指定する形式を使用します%.2f

于 2012-05-27T21:21:55.947 に答える
2

それ以外の

print tmp

試す

print '{0:.2f}'.format(tmp)

これにより、フロートは小数点以下2桁でフォーマットされます。

于 2012-05-27T21:22:41.003 に答える
1
>>> price=12.10
>>> price
12.1
>>> print('{0:.2f}'.format(price))
12.10
于 2012-05-27T21:23:56.333 に答える