Lors de l'ouverture d'un fichier CSV, la colonne d'entiers est convertie en une valeur de chaîne ('1', '23', etc.). Quelle est la meilleure façon de boucler pour les convertir en entiers?
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
Fichier CSV ci-dessous:
Account Value
ABC 6
DEF 3
GHI 4
JKL 7
Je pense que cela fait ce que vous voulez:
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
Production:
['Account', 'Value']
['ABC', 6]
['DEF', 3]
['GHI', 4]
['JKL', 7]
Si le CSV a des en-têtes, je suggère d'utiliser csv.DictReader
. Avec cela, vous pouvez faire:
with open('C:/Python27/testweight.csv', 'rb') as f:
reader = csv.DictReader(f)
for row in reader:
integer = int(row['Name of Column'])
Vous pouvez simplement parcourir toutes les lignes comme suit:
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
Cela afficherait:
[['Account', 'Value'], ['ABC', 6], ['DEF', 3], ['GHI', 4], ['JKL', 7]]