Je suis aux prises avec quelque chose qui doit être l'un de ces problèmes «si évident que je suis un idiot». J'ai un fichier csv que je veux lire et utiliser pour créer des «tables» individuelles. J'ai une variable (RID) qui marque le début d'une nouvelle «table».Problèmes assignant des valeurs dict à des variables
Je n'arrive pas à faire avancer ma variable indicateur (currentRow) lorsque je termine la manipulation de chaque ligne. Vous pouvez voir les instructions d'impression, currentRow reste égal à 0.
Mais si j'utilise une instruction d'affectation en dehors de la boucle, je peux changer la valeur de currentRow à volonté. La tâche de test consiste simplement à comprendre où je suis dans la boucle.
currentRow=0
test=0
theTables=defaultdict(list)
for line in csv.DictReader(open(r'c:\temp\testread.csv')):
newTableKey=line['CIK']+'-'+line['RDATE']+'-'+line['CDATE']+'-'+line['FNAME']+' '+line['TID']
if line['RID']=='1':
test+=1 # I can get here
if currentRow>int(line['RID']):
print 'got here'
theTables[oldTableKey]=theList
test+=1 # I cannot get here
theList=[]
theList.append(line)
currrentRow=int(line['RID'])
print currentRow #this value always prints at 0
print int(line['RID']) #this prints at the correct value
oldTableKey=newTableKey
Peut-être que je suis confus, mais d'où vient le 'row ['RID']'? Je ne vois pas de variable 'row' ailleurs que sur cette ligne. – Amber
chaque ligne est un dictionnaire, il y a une clé appelée RID dans la ligne (un en-tête de colonne) – PyNEwbie
Il y a quelque chose qui ne va pas avec votre exemple de code. Vous imprimez 'int (row ['RID'])' qui n'est assigné nulle part dans le code. S'il s'agit d'une faute de frappe et que vous imprimez int (ligne ['RID']) et qu'elle diffère de ce qui est assigné à currentRow, alors vous n'avez pas inséré tout votre code; en particulier vous avez omis quelque chose d'important qui modifie currentRow à nouveau après l'affectation. En outre, pourriez-vous inclure le format CSV? – kibitzer