我想在第一个空行开始解析文本文件

时间:2012-08-08 21:29:40

标签: python

我想开始在文本文件的第一个空行解析文本文件。每个文本文件的前几行都有我在搜索中不需要的URL,每个文件的长度标题略有不同。每个文件在标题和正文之间都有一个空行,所以我想在空行后开始我的正则表达式搜索

我知道如何找到空行,但无法弄清楚如何获取它们的索引。

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

任何帮助表示赞赏

6 个答案:

答案 0 :(得分:3)

只需单击文件忽略所有内容,直到找到空行。然后处理其余部分。

myfile = open(mydir,'r')
for line in myfile:
    if line in ['\n', '\r\n']:
        break
for line in myfile:
    #dostuff

答案 1 :(得分: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):

答案 2 :(得分:2)

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

答案 3 :(得分:1)

为什么不从你的“找到它”的正则表达式开始,而不用担心行号?

答案 4 :(得分:0)

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

答案 5 :(得分: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),