Python按单词数阈值合并文本文件行的代码问题修复
文件行拼接逻辑代码修复方案
原有代码的核心问题
- 循环逻辑完全失效:
while循环内写死break,每次仅拼接1行就强制退出,根本没有实现「单词数不足时持续读取后续行拼接」的需求 - 分支逻辑错位:
while...else的触发条件不符合预期,会重复追加行内容,导致结果列表出现重复文本、分段错误 - 末尾内容丢失:外层
for循环遍历完所有行后,临时缓存变量中存储的最后一段拼接内容没有被追加到结果列表,直接造成末尾行遗漏 - 缺失空行过滤:没有对空白空行做跳过处理,无意义的空字符会干扰单词计数、污染拼接结果
- 拼接格式错误:直接拼接行内容时没有补间隔空格,会出现上一行末尾单词和下一行开头单词连为一体的问题
修复后完整代码
# 逐行懒加载文件内容的生成器,大文件处理内存占用更低 def gen_file_reader(file_path): with open(file_path, encoding='utf-8') as file: for line in file: # 提前过滤纯空白行 stripped_line = line.strip() if stripped_line: yield stripped_line container = [] # 存储最终结果 lines = gen_file_reader('test_file.txt') WORD_THRESHOLD = 20 # 单词数最小阈值 cache = "" # 临时拼接缓存 for line in lines: # 拼接时补空格,避免单词粘连 cache = f"{cache} {line}".strip() # 缓存内容单词数达标就追加到结果,清空缓存 if len(cache.split()) >= WORD_THRESHOLD: container.append(cache) cache = "" # 所有行遍历完成后,追加缓存中剩余的最后一段内容(不足阈值也必须存入,避免遗漏) if cache: container.append(cache)
效果验证
- 严格匹配需求规则:单行单词数达标直接存入结果,不足则持续拼接后续行直至满足阈值
- 自动过滤全空白行,单词计数准确
- 文件末尾剩余内容会被正常追加,无行遗漏问题
- 行拼接时自动补间隔空格,无单词粘连、前后多余空白的格式问题
- 运行后
container前4项输出和给出的预期结果完全一致
内容的提问来源于stack exchange,提问作者Akbar Hussein
相关产品推荐
相关产品推荐

