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

请注意,如果您想要一个行号而不是索引,那么您通常希望从 1 而不是 0 开始。为此,将第一行更改为:

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 回答