Python实现文本文件分隔符间不定行数文本段的提取与处理
处理分隔符分隔的文本段的Python方案
嘿,这个需求我之前也碰到过,给你分享两个实用的实现方式,根据你的文件大小选就行:
方法1:一次性读取分割(适合小文件)
如果你的文件不大,可以直接把整个文件读进内存,然后用分隔符分割成各个文本段:
def process_segment(segment): # 这里替换成你要运行的算法逻辑 print("正在处理文本段:") print(segment.strip()) # 去掉前后多余的换行和空白字符 # 读取目标文件内容 with open("your_target_file.txt", "r", encoding="utf-8") as f: full_content = f.read() # 定义分隔符 separator = "###########" # 分割成各个文本段 segments = full_content.split(separator) # 遍历处理每个段(跳过空段,比如文件开头/结尾可能出现的空内容) for seg in segments: cleaned_segment = seg.strip() if cleaned_segment: process_segment(cleaned_segment)
这种方式简单直接,代码量少,小文件场景下用起来特别顺手。
方法2:逐行读取处理(适合大文件)
如果你的文件体积很大,一次性读进内存会占用过多资源,那就用逐行读取的方式,攒够一个完整的文本段就处理一个:
def process_segment(lines_list): # 把列表里的行拼接成完整文本段,也可以直接对每行单独处理 complete_segment = "".join(lines_list) print("正在处理文本段:") print(complete_segment.strip()) separator = "###########" current_segment_lines = [] with open("your_target_file.txt", "r", encoding="utf-8") as f: for line in f: # 检查当前行是否是分隔符(注意要去掉换行符再比较) if line.strip() == separator: # 遇到分隔符,处理当前攒好的文本段 if current_segment_lines: process_segment(current_segment_lines) current_segment_lines = [] # 重置,准备攒下一个段 else: current_segment_lines.append(line) # 处理文件最后一段(可能没有以分隔符结尾的情况) if current_segment_lines: process_segment(current_segment_lines)
这种方式内存占用极低,不管文件多大都能轻松处理。
你只需要把process_segment函数里的逻辑替换成自己的算法就行,比如文本分析、数据提取、格式转换等等。
内容的提问来源于stack exchange,提问作者alex vlad
相关产品推荐
相关产品推荐

