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

PDF文本清洗:按指定条件合并字符串列表的函数问题求助

解决PDF文本清洗中的字符串合并问题

你的函数将所有元素错误合并为一个字符串,核心问题在于判断条件过于宽泛,未区分数值型整数+小数点(如3.3)与其他带小数点的字符串(如章节号A.1),导致独立的章节号被错误合并到统计项中。

错误原因分析

  1. 原函数仅用"%" in lst[i] and "." in lst[i]判断停止合并的条件,未识别小数点的类型:章节号A.1中的.会被误判,且该元素因无%被强制合并后续内容。
  2. 合并逻辑未区分独立项(如章节号)和需要合并的统计前置文本,导致所有不满足双条件的元素被连续合并。

解决方案

通过正则表达式精准识别数值型小数点,区分独立项与待合并项,维护临时合并组逐步合并直到满足条件:

import re

def merge_strings(lst):
    result = []
    current_group = []
    
    def meets_condition(s):
        # 检查是否同时包含%和数值型整数+小数点格式
        return "%" in s and re.search(r'\d+\.', s) is not None
    
    def has_integer_dot(s):
        # 检查是否包含数值型整数+小数点格式
        return re.search(r'\d+\.', s) is not None
    
    for item in lst:
        if not current_group:
            # 无合并组时,判断当前元素是否为独立项
            if meets_condition(item):
                result.append(item)
            else:
                current_group.append(item)
                # 若当前组无数值型小数点,说明是独立项,直接加入结果
                if not has_integer_dot(' '.join(current_group)):
                    result.append(' '.join(current_group))
                    current_group = []
        else:
            # 有合并组时,加入元素并检查是否满足终止条件
            current_group.append(item)
            if meets_condition(' '.join(current_group)):
                result.append(' '.join(current_group))
                current_group = []
    # 处理剩余未完成的合并组
    if current_group:
        result.append(' '.join(current_group))
    return result

# 测试示例输入
input_lst = ['A.1 Environmentally', '3.3 Manufacture of low', 'carbon technologies', 'C29.1 0 0% 100%']
print(merge_strings(input_lst))
# 输出:['A.1 Environmentally', '3.3 Manufacture of low carbon technologies C29.1 0 0% 100%']

代码解释

  • meets_condition:判断字符串是否满足最终合并终止条件(同时包含%和数值型整数+小数点)。
  • has_integer_dot:识别字符串是否包含数值型小数点,用来区分章节号和统计项前置文本。
  • 遍历过程中,若当前无合并组,先判断元素是否为独立项(无数值型小数点且不满足终止条件),若是则直接加入结果;否则启动合并组。
  • 合并组持续加入后续元素,直到合并后的字符串满足终止条件,再将结果加入列表;最后处理剩余未完成的合并组,避免内容遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:47:02