第一个真值if语句

时间:2014-07-16 18:43:40

标签: python

我循环遍历文本文档的行,试图找到在另一行之后出现的第一个空白行(例如,对于此示例,为100行)。

我的代码是:

BlankLines=[]
f=open(MyFile, 'r')
for num, line in enumerate(f):
    if line=='\n' and num>100:
        BlankLines.append(num)
Result=Blanklines[0]

有多条线符合此条件,但我只想要满足它的第一条线。这样做最优雅的方式是什么?有没有办法在不创建列表然后选择第一个元素的情况下完成它?

谢谢!

3 个答案:

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