あなたがdocument.read()
を呼び出し、あなたfile
からread
data
が、これはのみ(後に、あなただけの空string
を取得します)一度に行うことができます。
あなたはfor-loop
にこのラインを複数回呼び出している:
findall("Good[\s\S]*?Afternoon", doc.read())[x]
for-loop
の最初のiteration
が正常に動作します、しかしその後、document.read()
は空string
を返しますので、その後re.findall
は空list
を返します。そしてlist
の値がx
になると、list
が空であるため、IndexError
が表示されます。あなたが何をしたいか
、あなたのfor-loop
でvariable
、その後にfindall
一部で返さlist
を保存している、そのvariable
にアクセスします。この方法では、file
のread
から一度だけエラーが発生します。現時点では、あなたは何をしていないので、私はあなたがlist
(からx
用語で何をしたいのか、正確にはわからない
doc = open("Folder1/10-06-2017.txt",'r')
matches = findall("Good[\s\S]*?Afternoon", doc.read())
for x in range(1,9):
matches[x]
:
このためのコードは次のようになりますしかし、少なくともそれはあなたが今したいと思うように動作します...
最後に、reading
を終了した後で、file
を閉じておくことをお勧めします。あなたはこれを行うことができます2
方法。 (おそらくmatches
を定義した後)いくつかの点で、あなたのコードに
doc.close()
:最初の行を追加しています。
秒(エラーがスローされたかのように、おそらくより良い、ファイルがまだ閉じられます)方法はwith
内のコードのその部分を置くために、次のようになります。
with open("Folder1/10-06-2017.txt", "r") as doc:
matches = findall("Good[\s\S]*?Afternoon", doc.read())
...
あの、 'document'は何ですかそれは 'doc'と思われますか?そうであれば、2回目の繰り返しで、 'doc.read()' **は常に空の文字列**になります。とにかくこれはなぜループですか? –
@ juanpa.arrivillagaそれはループの中にある理由は複雑です...しかし、私は謝罪する、はいそれはdoc = document(固定)です。何か提案はありますか? – user123easyas
'print(findall("良い[\ s \ S] *?午後 "))'あなたは何を見ますか? – roganjosh