ファイル内で特定のマーカーがある可能性のある場所を特定する必要があります。list.index を使用することを考え始めましたが、すぐに最初の (そして最初の) アイテムのみを返すことがわかりました。そこで、独自のソリューションを実装することにしました。
count=0
docIndex=[]
for line in open('myfile.txt','r'):
if 'mystring' in line:
docIndex.append(count)
count+=1
しかし、これは Python です。それはPythonなので、もっと簡単な解決策が必要です。このサイトとウェブを探し回って、少し良いものを思いつきました
newDocIndex=[]
for line in fileinput.input('myfile',inplace=1):
if 'mystring' in line:
newDocIndex.append(fileinput.lineno())
これは情報が多すぎることは承知していますが、昨夜ファイナルの採点を終えたので、よく考えました。これは Python であり、この夏は少しでも前進したいと考えています。リスト内包表記を試してみましょう。
だから私はこれをしました:
[fileinput.lineno() for line in fileinput.input('myfile',inplace=1) if 'mystring' in line]
空のリストを取得しました。したがって、問題は for の項目がリストの作成に使用される項目でなければならないことだと最初に推測しました。つまりfileinput.lineno()
、空でないリストではなく行があった場合ですが、それは問題ではありません。
上記のプロセスをリスト内包表記に還元できますか?
答えを使用しますが、読みやすくするために調整します
listOfLines=[lineNumb for lineNumb,dataLine in enumerate(open('myfile')) if 'mystring' in dataLine]