readlines()
によってダンプされた文字列のリストが得られました。部分文字列または最後の行を含む最初の行のインデックスを探したいと思います。文字列のリストで部分文字列を検索すると、返されるインデックス
これは動作しますが、不格好なようです:
fooIndex=listOfStrings.index((next((x for x in listOfStrings if "foo" in x),listOfStrings[-1])))
が二回検索するより良い方法がなければならないが、私はそれを見つけることができません。 - ちょうど反復可能としてそれを使用するあなたが行を反復するためにファイルオブジェクトに.readlines()
を呼び出す必要はありません
def get_index(strings, substr):
for idx, string in enumerate(strings):
if substr in string:
break
return idx
注:両方、より読みやすく、効率的になり機能でenumerate()
を使用して
ていますか?最も効率的な方法は、ファイルの内容を直接ループすることです(** readlineを呼び出さないでください)。そして、あなたが望むテキストでその行が見えるときに停止/戻ります。 –
各行のインデックスを取得するために反復処理を行う場合は、 'enumerate'を使用できます。 – jonrsharpe
私はデータブロックをスライスしているので、インデックス付きスライスサブリストを 'numpy.genfromtxt'を含む関数に渡す方が効率的だと思います。データブロック(私は尋ねるべきだと思う別の質問)。 –