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

Python中多条件移除括号内内容:列表元素处理结果不符合预期的解决方法

问题分析

你的代码出问题的核心原因是正则表达式的贪婪匹配特性:原正则\(.*\)会匹配从第一个左括号(到最后一个右括号)之间的所有内容,而非单个括号内的独立内容。拿最后一个元素举例:

Ex-factory price (low-end price): Triethanolamine (85% commercial grade): North

贪婪匹配会把(low-end price): Triethanolamine (85% commercial grade)整个片段全部删掉,直接导致Triethanolamine丢失,最终得到不符合预期的结果。另外原代码里的pat3是未定义的变量,这也是一个明显的笔误。

修改后的代码

我们需要做两个关键调整:

  1. 将括号匹配正则改为非贪婪模式:\(.*?\),这样只会匹配每个独立括号内的内容,不会跨括号“过度匹配”。
  2. 清理冒号前后的多余空格,让最终格式和预期完全一致。
import re

def remove_extra(content):
    # 匹配所有括号及内部内容(非贪婪模式,只匹配单个括号对)
    pat_parentheses = r'\(.*?\)'
    # 第一步:移除所有括号及内部内容
    temp_content = re.sub(pat_parentheses, '', str(content))
    # 第二步:清理冒号前后的多余空格,统一格式为「: 」(冒号后留一个空格)
    pat_space_colon = r'\s*:\s*'
    return re.sub(pat_space_colon, ': ', temp_content).strip()

# 原始输入列表
l = ['hydrogenated benzene (purity: 99.9 density (g/cm3), produced in ZB): SD', 
     'Car board price (tax included): JT Port', 
     'Ex-factory price (low-end price): Triethanolamine (85% commercial grade): North' ]

# 处理并输出结果
result = [remove_extra(item) for item in l]
print(result)

运行结果

['hydrogenated benzene: SD', 'Car board price: JT Port', 'Ex-factory price: Triethanolamine: North']

完全符合你期望的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:22:46