You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从txt文件中提取以指定关键词开头的段落

原代码失效原因

你写的逻辑没跑通,是三个明确的问题:

  • return result 缩进错误,被写在了for循环体内部,循环执行第一次就会直接返回结果,根本不会遍历完所有文本行
  • 按单个换行符拆分内容后,拼接提取结果时没有加回换行分隔,最后输出的内容会全部挤成一整段,丢失原有换行格式
  • 直接调用open()读取文件既没有指定编码,也没有手动关闭文件句柄,遇到带中文/特殊字符的转录稿很容易报编码错误,属于不规范的文件操作写法
修正后代码
def extract_interviewee_content(file_path, keep_keyword="Interviewee: "):
    content_list = []
    # 用with上下文管理器自动处理文件关闭,指定utf-8编码规避乱码
    with open(file_path, "r", encoding="utf-8") as f:
        # 逐行遍历文件,比一次性读全量内容更省内存,长转录稿也不会卡顿
        for line in f:
            line = line.strip()
            if line.startswith(keep_keyword):
                # 只替换开头第一次出现的关键词,避免内容里出现相同字符串被误删
                pure_content = line.replace(keep_keyword, "", 1).strip()
                content_list.append(pure_content)
    # 用换行符拼接所有保留内容,还原原有段落格式
    return "\n".join(content_list)

if __name__ == "__main__":
    final_text = extract_interviewee_content("Transcript.txt")
    print(final_text)
    # 需要把提取结果存为新文件的话,放开下面三行注释即可
    # with open("interviewee_content.txt", "w", encoding="utf-8") as f:
    #     f.write(final_text)
适配特殊场景的调整方案
  • 如果你的转录稿里单段受访者发言跨了多行、段落之间用空行(也就是双换行\n\n)分隔,可以把逐行判断的逻辑改成先读全文,按\n\n拆分段落,再判断每个段落的开头是否匹配关键词即可,核心判断逻辑不变
  • 如果需要保留原文本里的空行格式,可以去掉代码里的strip()调用,直接对原始行做前缀判断即可

内容的提问来源于stack exchange,提问作者livvyc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:09:20