2017-01-21 11 views
0

私はPythonを初めて使いました。文字列を整数として読み取りますか? (Python 2.7)

ExcelファイルからPythonプログラムにデータをインポートしようとしています。私は、ExcelではなくPythonプログラム内でこれらの数値を使って簡単な計算を行うことができる必要があります。

import csv 
    with open ('vals.csv','rb') as csvfile: 
     reader = csv.reader(csvfile) 
     x = next(reader) 
     y = next(reader) 
     z = next(reader) 

     print x[0]+z[2] 
     print x[0]+1 

最初のprintステートメントは7(最初のxは3で3番目のzは4なので)を返すはずです。代わりに34が出力されるので、値を整数として扱っていないと仮定していますか?

二print文

このエラー原因:

TypeError: cannot concatenate 'str' and 'int' objects 

だからそれをもとにして、私はそれは、文字列の代わりに、整数として各行を読んでいると思います。

x = next(reader) 
    x = int(x) 
    y = next(reader) 
    y = int(y) 
    z = next(reader) 
    z = int(z) 

しかし、それは私に、このエラーを与える:私はこれは整数に変換しますかどうかを確認するために、この次のことをやってみました

TypeError: int() argument must be a string or a number, not 'list' 

だから私はそれを文字列としてそれを読んでいないと思いますか?

私はx [0](とそれらの残りの部分)のようなものを整数として読み取れるようにするために、計算を行うことができます。

+0

http://stackoverflow.com/help/someone-answers –

答えて

0

csv.readerモジュールは、各繰り返しで文字列のリストを生成します。

つまり、1行に1つの列しかない場合や、データに整数が含まれている場合でも、各行に整数のリストを取得するには

はリスト内包でそれを行う:

row1 = [int(x) for x in next(reader)] 

か、それはpythonの2だから:

row1 = map(int,next(reader)) 

その行の3番目の要素にアクセスするためにrow1[2]を使用します整数として。

0

csv.readerは、行の列に対応する文字列のlistsの反復可能である:

x = next(reader) 
# x: ['3', '4', '5'] 

すべての値がintに変換できる場合は、あなたが行うことができます:

x = map(int, x) 
# x: [3, 4, 5] 

そうでない場合は、個別にフィールドを変換する必要があります:

x[0] = int(x[0]) 
+0

ありがとうございました!それは今完璧に動作します! – user7446944

関連する問題