web-dev-qa-db-ja.com

CSVファイルの読み取り中に文字列値を整数値に変換する方法は?

CSVファイルを開くと、整数の列が文字列値( '1'、 '23'など)に変換されます。これらを整数に戻すためにループする最良の方法は何ですか?

import csv

with open('C:/Python27/testweight.csv', 'rb') as f:
    reader = csv.reader(f)
    rows = [row for row in reader if row[1] > 's']

for row in rows:
    print row

以下のCSVファイル:

Account Value
ABC      6
DEF      3
GHI      4
JKL      7
9
JSmooth

私はこれがあなたが望むことをすると思います:

import csv

with open('C:/Python27/testweight.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    header = next(reader)
    rows = [header] + [[row[0], int(row[1])] for row in reader]

for row in rows:
    print row

出力:

['Account', 'Value']
['ABC', 6]
['DEF', 3]
['GHI', 4]
['JKL', 7]
7
martineau

CSVにヘッダーがある場合は、csv.DictReaderの使用をお勧めします。これにより、次のことができます。

 with open('C:/Python27/testweight.csv', 'rb') as f:
    reader = csv.DictReader(f)
    for row in reader:
        integer = int(row['Name of Column'])
2

次のようにして、すべての行を繰り返すことができます。

import csv

with open('C:/Python27/testweight.csv', 'rb') as f:
    reader = csv.reader(f)
    rows = [row for row in reader if row[1] > `s`]

for index, cols in enumerate(rows[1:], 1):  # Skip the header row
    rows[index][1] = int(cols[1])

print rows

これは表示されます:

[['Account', 'Value'], ['ABC', 6], ['DEF', 3], ['GHI', 4], ['JKL', 7]]
0
Martin Evans