2010-12-10 9 views
2

私はPythonの初心者です。 基本的に、スラッシュ文字の特定の表セルを検索しています。セルにその文字が含まれている場合は、行全体を削除する必要があります。Pythonは文字列のスラッシュを見つける

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

上記のコードは決してスラッシュを検出しませんが、スラッシュの代わりに他の文字を検出します。どんな助けでも大歓迎です。

+0

なぜインデックス7?行[7]で構文 "/"を使うと、はるかにPythonicです。反復処理を行っているリストの要素を削除することは、定義されていない動作を引き起こすため、実際には避けるべきです。 'for counter、row in enumerate(table):'を使用して、独自のカウンタ変数を保持しなくてもかまいません。 – marcog

+0

@marcog:残念ながら、この場合、 'enumerate()'は助けになりません。 –

答えて

4

このコードには非常に多くの問題があります。書き直しが簡単です。

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

あなたが答えに時間がかかる場合は、元のコードで何が間違っていたかを説明する時間を取るかもしれません – pafcu

+0

ありがとう、これは完全に働いた。私が言ったように、私は初心者であり、すべての構文を拾うだけです。 –

+0

@タイラー:覚えておくべき最も重要なことは、反復処理中のシーケンスを決して変更しないことです。 –

-2

あなたはもしかしたら...

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

を行うことができませんでしたかあなたが本当にデルへのテーブルから行をカウンタを必要とする場合、そしてちょうどでカウンターを戻す。

+4

これはコードは何もしません。 'row'という名前はループによって定義され、' table'の中のものへの参照ではありません。 –

+0

このコードは正常に動作するはずですが、あなたの言っていることはわかりません。 – Iacks

+0

'del'はオブジェクトではなく名前を削除します。そのオブジェクトは、それを実行することによって偶発的に削除される可能性があります。 –

関連する問題