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
私はこれがあなたが望むことをすると思います:
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]
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'])
次のようにして、すべての行を繰り返すことができます。
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]]