我循环遍历文本文档的行,试图找到在另一行之后出现的第一个空白行(例如,对于此示例,为100行)。
我的代码是:
BlankLines=[]
f=open(MyFile, 'r')
for num, line in enumerate(f):
if line=='\n' and num>100:
BlankLines.append(num)
Result=Blanklines[0]
有多条线符合此条件,但我只想要满足它的第一条线。这样做最优雅的方式是什么?有没有办法在不创建列表然后选择第一个元素的情况下完成它?
谢谢!
答案 0 :(得分:4)
您正在寻找break
的{{1}} - 循环:
for
答案 1 :(得分:1)
此代码假设第一行编号为0.(代码未经测试)第一个循环跳过您不想检查的行。
n = 100
f = open(MyFile, 'r')
for _ in xrange(n): # n is first line to check for blank, skip previous lines
next(f)
for line in f: # reading the file continues where you left off
line = line.strip() # allows for lines that have spaces and tabs
if len(line) == 0:
return n # returns line number
n += 1
f.close()
如果您只关心只有\ n的行,请省略strip()并使用
if line == '\n':
与原始代码一样。
答案 2 :(得分:0)
是的,它是一个名为" break"的关键字它从循环中退出。找到第一行后使用它。
然而,正如用户@wnnmaw指出的那样,与" \ n"相比可能不会在所有情况下削减它。如果线路有很多空格怎么办?它应该被认为是空的吗?
如果您这么认为,请转到here。