1

テキスト ファイルの最初の空の行からテキスト ファイルの解析を開始したいと考えています。各テキスト ファイルの最初の数行には、検索に使用したくない URL があり、各ファイルのヘッダーの長さはわずかに異なります。各ファイルにはヘッダーとテキスト本文の間に空の行があるため、空の行の後に正規表現検索を開始したいと思います

空行を見つける方法は知っていますが、インデックスを取得する方法がわかりません。

myfile = open(mydir,'r')
for line in myfile:
    if line in ['\n', '\r\n']:
        print 'Found it'

どんな助けでも大歓迎

4

6 に答える 6

4
with open(mydir,'r') as myfile
    next(line for line in myfile if line.isspace())
    # now myfile is at the first line after the blank line
于 2012-08-08T21:42:27.523 に答える
3

空の行が見つかるまで、すべてを無視してファイルをステップ実行します。その後、残りを処理します。

myfile = open(mydir,'r')
for line in myfile:
    if line in ['\n', '\r\n']:
        break
for line in myfile:
    #dostuff
于 2012-08-08T21:32:08.793 に答える
2

空行を見つける方法は知っていますが、インデックスを取得する方法がわかりません。

なぜインデックスが必要なのか、あなたは言っていません。しかし、あなた (またはこの質問を読んでいる他の誰か)実際にインデックスを必要としていると仮定すると、組み込みenumerate関数を使用できます。

for i, line in enumerate(myfile):
    if line in ['\n', '\r\n']:
        print 'Found it!', i

インデックスの代わりに行番号が必要な場合は、通常、0 ではなく 1 から開始する必要があることに注意してください。これを行うには、最初の行を次のように変更します。

for i, line in enumerate(myfile, 1):
于 2012-08-08T21:32:06.887 に答える
1

「見つかった」正規表現から始めて、行番号を気にしないのはなぜですか?

于 2012-08-08T21:31:45.123 に答える
0
myfile = open(mydir,'r')
for index,line in enumerate(myfile):
    if line in ['\n', '\r\n']:
        print 'Found it'
于 2012-08-08T21:31:55.387 に答える
0
>>> from itertools import dropwhile
>>> from operator import truth
>>> from itertools import islice
>>> with open('test.z') as f:
...     gen = dropwhile(lambda x: not(x == '\n' or x == '\r\n'), f)
...     gen = islice(gen, 1, None)
...     for line in gen:
...             print(line),
于 2012-08-08T21:44:09.363 に答える