只有当它以特定单词开头时才打印下一行

时间:2016-05-04 15:50:35

标签: python

我对python有点新意,我想知道是否有人可以提供帮助。基本上我正在阅读文件的内容,当我找到单词" prb"我想使用next()函数检查下一行,如果它以单词" rt"开头,我想打印两行。到目前为止,我写了这段代码:

    with open('/home/user/Desktop/3rdstep.txt', 'r') as f:
    f.readline()
    for line in f:
            if "prb" in line:
                    try:
                            myword = next(f)
                            if "rt" in myword:
                                    print(line.strip())
                                    print(myword)
                    except:
                            print("pass")

这很好但唯一的问题是它会随机跳过" rt"因为我不知道的原因。任何人都可以帮忙或让别人做类似的事情吗?

由于

2 个答案:

答案 0 :(得分:0)

您可以使用if myword.startswith("rt"):代替if "rt" in myword:

答案 1 :(得分:0)

如果您的输入有两行,以'prb'开头,后跟以'rt'开头的行,则会跳过它们。唯一的例外是它们是文件中的前三行。这是因为for line in f:读取以'prb'开头的第一行,myword = next(f)读取第二行。因此,在以下迭代中line'rt'开头。

您可以存储前一行,然后检查两行是否匹配,而不是阅读下一行:

prev = ''
with open('/home/user/Desktop/3rdstep.txt') as f:
    for line in f:
        if prev.startswith('prb') and line.startswith('rt'):
            print(prev.strip())
            print(line)
        prev = line