2017-06-09 16 views
0
import csv 

oneFileName = listOfFiles[0] 

lineNum = 0 

listOfLists = [] 

with open(oneFileName,"rt") as csvfile: 
    lineReader = csv.reader(csvfile,delimiter=",",quotechar="\"") 
    for row in lineReader: 
     lineNum = (lineNum + 1) 
     if lineNum == 1: 
      print("Skipping the header row") 
      continue 
     symbol = row[0] 
     close = row[5] 
     prevClose = row[7] 
     tradedQty = row[9] 
     pctChange = float(float(close)/float(prevClose) - 1) 
     oneResultRow = [symbol, pctChange,float(tradedQty)] 
     listOfLists.append(oneResultRow) 
     print(symbol, "{:,.lf}".format(float(tradedQty/1e6), "M INR", "{:,.lf}".format(pctChange*100), "%")) 
    print("Done iterating over the file contents - the file is closed now!") 
    print("We have stock info for " + str(len(listOfLists))) 

listOfListsSortedByQty = sorted(listOfLists, key=lambda x:x[2], reverse=True) 

listOfListsSortedByQty = sorted(listOfLists, key=lambda x: x[1], reverse=True) 

私はこのエラーを取得しておいてください。1e6は私にタイプエラーを引き起こしていますか?

print(symbol, "{:,.lf}".format(float(tradedQty/1e6), "M INR", "{:,.lf}".format(pctChange*100), "%")) 
TypeError: unsupported operand type(s) for /: 'str' and 'float 

答えて

0

tradedQtyは文字列です。 1e6は数値であり、問​​題ではありません。

CSVファイルは単なる文字列なので、数値データを数値型に変換する必要があります。お試しくださいtradedQty = float(row[9])

1

いいえ、間違った場所にかっこを置くことは問題です。

float(tradedQty/1e6) 
//  ^^^^^^^^^ ^^^ 
//  string float 
// ^^^^^ 
// too late 

私はあなたが書くためのものと確信している:

float(tradedQty)/1e6 
関連する問題