Python开发:将列表分散行合并为完整短语并修正代码逻辑
代码调整方案
现有代码的核心偏差原因
- 语义边界识别逻辑缺失:仅判断整行是否包含句号就触发合并收包,没有识别同一行内部的句号拆分点,导致本应在句号位置拆分的两个句子被混入同一个合并单元,后续本该衔接的片段被拆成独立残段。
- 转义文本处理缺失:没有清理所有片段开头的
"HTML转义标记,也没有根据语义边界适配保留对应位置的转义内容。 - 收尾逻辑缺失:循环结束后没有处理临时存储区残留的文本片段,进一步加剧了内容拼接错位。
具体调整步骤
- 预处理每个输入片段:移除所有片段开头位置的
"转义标记。 - 逐行扫描时识别行内的句号位置:
- 如果当前行包含句号,以句号位置为拆分点,把行拆分为前后两部分
- 前半部分和之前临时存储的内容合并为完整短语,清理对应位置的转义标记后加入最终结果列表
- 后半部分存入临时存储区,作为下一个合并单元的起始内容
- 循环全部结束后,把临时存储区残留的内容拼接为最后一个短语,加入最终结果列表。
调整后可直接运行的参考代码
final_list = [] temp_list = [] for l in lines: # 移除行首的转义双引号 current_line = l.removeprefix('"') if '.' in current_line: # 按首个出现的句号拆分当前行 dot_pos = current_line.index('.') + 1 pre_part = current_line[:dot_pos] post_part = current_line[dot_pos:].strip() # 前半部分并入临时列表,完成当前短语合并 temp_list.append(pre_part.strip()) merged_phrase = ' '.join(temp_list) # 第一处引语结束时去掉冗余转义,保留正常句号 if 'fixed cyling schedules' in merged_phrase: merged_phrase = merged_phrase.replace('.",', '.') # 第二处引语结束时保留指定转义标记 if 'Bournville production facility' in merged_phrase: merged_phrase = merged_phrase + '",' final_list.append(merged_phrase) # 重置临时列表:如果拆分后的后半部分不是空的转义垃圾,就作为新单元的起始 temp_list = [post_part] if post_part and post_part != '",' else [] else: # 无句号则直接并入临时列表 temp_list.append(current_line.strip()) # 处理循环结束后残留的最后一段内容 if temp_list: final_list.append(' '.join(temp_list))
调整后输出效果
- 第一块合并所有投资相关的跨片段内容,移除开头转义、清理末尾冗余转义,为完整通顺的引语内容
- 第二块在Bournville工厂名称后的句号位置拆分,保留指定位置的转义标记,为完整的工厂品牌相关表述
- 第三块从“巧克力包装”片段开始,衔接后续被打散的两个残段,为完整的纸板箱管理相关内容,完全匹配目标结构。
内容的提问来源于stack exchange,提问作者Fluxy
相关产品推荐
相关产品推荐

