为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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


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

使用这种方法,段落之间是否有多个空行也没有关系。此外,如果“空白”行包含空格,它仍然可以工作。



查看完整回答
反对 回复 2023-06-27
?
呼如林

TA贡献1798条经验 获得超3个赞

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')第一个条目旁边的索引一样条目中的换行符。


另外,在运行之前请确保该文件确实存在,否则会引发错误。


查看完整回答
反对 回复 2023-06-27
  • 2 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信