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

Python代码修改:在TXT文件中搜索字符串并输出完整句子

解决方案

首先补充原代码缺失的import os,然后针对需求修改代码如下:

import os

searchString = 'doctorate'
# 遍历目录下所有TXT文件
for eachFile in os.listdir():
    if not eachFile.endswith('.txt'):
        continue  # 跳过非TXT文件
    with open(eachFile, 'r', encoding='utf-8') as currentFile:
        content = currentFile.read()  # 读取整个文件内容,处理跨行句子
        start_idx = 0
        while True:
            # 查找当前位置之后的searchString
            str_pos = content.find(searchString, start_idx)
            if str_pos == -1:
                break  # 没有更多匹配,退出循环
            
            # 向前找最近的句点(句子起始)
            prev_period = content.rfind('.', 0, str_pos)
            sentence_start = prev_period + 1 if prev_period != -1 else 0
            
            # 向后找最近的句点(句子结束)
            next_period = content.find('.', str_pos + len(searchString))
            sentence_end = next_period + 1 if next_period != -1 else len(content)
            
            # 提取并打印完整句子,去除前后空白
            full_sentence = content[sentence_start:sentence_end].strip()
            print(f"文件{eachFile}中匹配的句子:")
            print(full_sentence)
            print("-" * 50)  # 分隔线
            
            # 更新起始位置,避免重复匹配同一内容
            start_idx = sentence_end

关键修改说明

  • 过滤TXT文件:新增endswith('.txt')判断,只处理目标文件类型
  • 读取全文内容:替换readlines()为read(),解决句子跨行的问题
  • 定位完整句子:
    • 用rfind从匹配字符串位置向前查找最近的句点,确定句子起点
    • 用find从匹配字符串结束位置向后查找最近的句点,确定句子终点
  • 避免重复匹配:每次处理完一个句子后,将下一次查找的起始位置设为当前句子的终点

注意事项

  • 该代码默认句点.为句子结束标志,如果文本中存在缩写(如Mr.)或其他带句点的非句子结束场景,可能会误分割句子,可根据实际文本规则调整分隔逻辑(比如结合空格判断.)
  • 如果需要处理编码不统一的TXT文件,可以添加异常捕获机制,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:36:15