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

2024-10-03 04:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tom
15
Basketball

James
16
Tennis
Track
Choir

Tim
14
Band
Class Chairman

我想展示一下:

Tom
James
Tim

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


Tags: 文件方法txt信息bandtrackclass段落
2条回答
f = open('filename.txt', 'rt')

for entry in f.read().split('\n\n'):
    print(entry[0 : entry.index('\n')])

filename.txt是该文本文件的名称,rt是文件打开模式:r表示“读取”(只读模式),t表示“文本”文件

每个条目(段落)由两个换行符分隔(仔细想想),因此我们.split()通过这一点,我们知道每个这样的条目的第一行是名称,因此我们将字符串拼接为[0 : entry.index('\n')],因为entry.index('\n')给出了条目中第一个换行符旁边的索引

此外,在运行该文件之前,请确保该文件确实存在,否则它将抛出错误

使用变量跟踪上一次迭代中的行是否包含任何文本。您需要有文本的行,以及前一行(如果有)没有任何文本的行

previous_has_text = False
with 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

给出:

Tom
James
Tim

使用这种方法,段落之间是否有超过一个空行并不重要。此外,如果“空白”行包含空格,它仍将工作

相关问题 更多 >