結果コードを設定する礼儀を持たない関数の出力を理解しようとしています。多くの場合、別の変換ステータス メッセージの途中で、stderr ストリームに混在する "error:" 文字列によって失敗したことがわかります。
次のリスト内包表記は機能しますが、「エラー:」文字列を 2 回スキャンします。実際のエラー行を再スキャンしているだけなので、問題なく動作しますが、シングル スキャンの使い方がわからないのが気になります。作業コードは次のとおりです。
errors = [e[e.find('error:'):] for e in err.splitlines() if 'error:' in e]
単純化する明白な (そして間違った) 方法は、「検索」結果を保存することです
errors = [e[i:] for i in e.find('error:') if i != -1 for e in err.splitlines()]
ただし、「UnboundLocalError: ローカル変数 'e' が割り当て前に参照されました」というメッセージが表示されます。内包表記の for をやみくもに逆にすることも失敗します。これはどのように行われますか?
ありがとう。ケント