如何在Python中打印文本文件每个段落的第一行?

假设我有一个像这样的文本文件:


Tom

15

Basketball


James

16

Tennis

Track

Choir


Tim

14

Band

Class Chairman

我想显示这个:


Tom

James

Tim

我的程序允许用户将更多信息附加到 txt 文件中。虽然我可以让它只读取第 1、5 和 11 行,但问题在于显示任何添加的信息。每个段落也可能有不同的行数。据我所知(并在网上找到),没有办法在不导入外部工具的情况下仅打印 txt 文件每个段落的第一行。是否有一种复杂的方法来做到这一点,或者是否有不同的方法来解决这个问题?


catspeake
浏览 225回答 2
2回答

慕妹3242003

使用变量来跟踪上一次迭代中的行是否包含任何文本。您需要包含文本的行,并且前一行(如果有)没有任何文本。previous_has_text = Falsewith open('input.txt') as f:    for line in f:        line = line.strip()        if line:            # THIS line has text            if not previous_has_text:                print(line)            previous_has_text = True  # ready for next iteration        else:            previous_has_text = False  # likewise给出:TomJamesTim使用这种方法,段落之间是否有多个空行也没有关系。此外,如果“空白”行包含空格,它仍然可以工作。

呼如林

f = open('filename.txt', 'rt')for entry in f.read().split('\n\n'):    print(entry[0 : entry.index('\n')])filename.txt是该文本文件的名称,rt是文件打开模式:r代表“read”(只读模式)和t“text”文件。每个条目(段落)都由两个换行符分隔(想想看),因此.split()对于每个这样的条目,我们知道第一行是名称,因此我们拼接字符串,就像[0 : entry.index('\n')]给出entry.index('\n')第一个条目旁边的索引一样条目中的换行符。另外,在运行之前请确保该文件确实存在,否则会引发错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python