2011-04-29 5 views
0

Je l'extrait de code de code suivant:Python: Conditions de réglage dans les cas-Elif-else bloc

for row in lst: 
    if 'Type' in row[0]: 
     for col in range(len(row)): 
      #do something 
    elif (not 'Type' or '') in row[0]: 
     for col in range(len(row)): 
      #do something 
row_count +=1 

Pour la deuxième partie de elif (not 'Type' or '') comment puis-je pas augmenter la contre-row_count si son vrai pour row[0] = '' seulement mais augmente quand row[0]! = Type est atteint? Je pourrais définir la condition de compteur avec le bloc if-else comme im balayage ligne par ligne dans lst qui est fondamentalement une ligne lue à partir d'un lecteur csv en python.

Peut-être que je me complique trop? Avis plz. [EDIT] - Voici le code actuel, en utilisant le module xlwt pour écrire dans les feuilles de calcul.

for row in spamReader: 
    if 'Type' in row[0]: 
     for col in range(len(row)): 
      ws.write(0,col,convert(row[col]),style) 
    elif (not 'Type' or '') in row[0]: 
     for col in range(len(row)): 
      ws.write(row_count,col,convert(row[col]),style) 
    row_count +=1 

Plus de détails: Je possède ce fichier csv où la ligne de balayage Im par ligne. Quelle que soit la ligne où sa première valeur est 'Type', je l'écris dans une autre feuille de calcul xls pour qu'elle devienne la première ligne. Sinon, il continue à copier rangée par rangée. Mais, quand la première colonne de la rangée est vide, c'est-à-dire '', elle suppose de la passer/la négliger.

+1

Pouvez-vous déplacer la déclaration 'row_count' dans le bloc si? –

+0

Quand voulez-vous augmenter 'row_count'? – wong2

+0

si je déplace l'instruction 'row_count' dans le bloc, à quel retrait suis-je censé l'aligner? coz, une fois qu'il a incrémenté le compteur, le prochain bloc l'utilisera dans l'instruction 'do something'. – siva

Répondre

0

Que diriez-vous ceci:

for row in spamReader: 
    if row[0] == '': 
     continue 

    if 'Type' in row[0]: 
     row_count = 0 
     ... start new worksheet ... 

    for col in range(len(row)): 
     ws.write(row_count,col,convert(row[col]),style) 
Questions connexes