2010-12-10 5 views
2

Je suis un débutant à Python alors ours avec moi. Fondamentalement, je suis à la recherche d'une cellule de tableau particulier pour le caractère barre oblique. Si la cellule contient ce caractère, je veux supprimer la ligne entière.Python Trouver barre oblique dans une chaîne

counter = 0 
for row in table: 
    if row[7].find("/") != -1: 
     del table[counter] 
     continue 
    counter+=1 

Le code ci-dessus ne détecte jamais la barre oblique mais trouve tout autre caractère que je remplace pour la barre oblique. Toute aide serait très appréciée.

+0

Pourquoi indice 7? Utilisez la syntaxe '"/"dans la rangée [7]', c'est beaucoup plus Pythonic. Vous devriez vraiment éviter de supprimer des éléments de la liste que vous itérez car cela provoque un comportement indéfini. Vous pouvez aussi utiliser 'pour counter, row dans enumerate (table):' et éviter d'avoir à garder votre propre variable de compteur. – marcog

+0

@marcog: Malheureusement 'enumerate()' ne peut pas aider dans ce cas. –

Répondre

4

Il y a tellement de problèmes avec ce code qu'il est plus facile de le réécrire.

table[:] = [row for row in table if '/' not in row[7]] 
+6

Si vous prenez le temps de répondre vous pourriez aussi bien prendre le temps d'expliquer ce qui n'allait pas dans le code original – pafcu

+0

Merci, cela a fonctionné parfaitement. Comme je l'ai dit, je suis un débutant et je ne fais que reprendre toute la syntaxe. –

+0

@Tyler: La plus grande chose à retenir est de ne jamais modifier une séquence que vous itérez. –

-2

Ne pourriez-vous juste peut-être faire ..

for row in table: 
    if '/' in row[7]: 
     row.delete() 

Ou si vous avez vraiment besoin le compteur del la ligne de la table, puis il suffit de mettre le compteur avant.

+4

le code ne fera rien. Le nom 'row' est défini par la boucle et ne fait référence à rien dans' table'. –

+0

Ce code devrait fonctionner correctement, je ne vois pas ce que vous dites. – Iacks

+0

'del' supprime les noms, pas les objets. Que les objets peuvent être supprimés en l'exécutant est accessoire. –

Questions connexes