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

如何修复Python字符串转换时值含逗号导致解析失败的Bug

问题根因

原有逻辑核心缺陷是直接用逗号做全局分割,没有区分「字段间分隔用的逗号」和「字段值内部自带的逗号」,只要任意字段值中出现逗号,就会被错误拆成多个独立片段,后续按冒号拆分键值的逻辑自然失效。另外原有针对HTTP链接的硬编码兼容逻辑鲁棒性差,空值也没有按要求转换为None。

修复后代码
import re

def convert(example):
    # 移除首尾大括号
    content = example.strip("{}")
    # 匹配真正的字段分隔边界:逗号+空格+键名(字母/横杠组成)+冒号,不会误拆值内部的逗号
    split_pattern = re.compile(r',\s+(?=[a-zA-Z-]+:)')
    kv_list = split_pattern.split(content)
    final = {}
    for kv in kv_list:
        # 仅按第一个冒号拆分键和值,自动兼容值内带冒号的场景(如URL)
        key, value = kv.split(":", 1)
        # 统一清理首尾空白字符
        key = key.strip()
        value = value.strip()
        # 空值转换为None
        final[key] = value if value else None
    return final
效果验证
  • 针对带逗号的异常字符串测试,输出完全匹配目标结果:
{
    "tvg-id": None,
    "tvg-name": "Antonio, ihm schmeckt's nicht! (2016)",
    "tvg-logo": "https://image.tmdb.org/t/p/w600_and_h900_bestv2/dyLfGb1mF2PUd0Rz5kqKiYtQl3r.jpg",
    "group-title": "2017-16-15 Germany Cinema"
}
  • 针对原无逗号的正常字符串测试,解析结果和原有逻辑输出一致,无兼容性问题。
核心优化点
  • 放弃全局逗号拆分逻辑,通过正则精准识别字段边界,从根源避免值内逗号被误判为分隔符
  • 键值拆分时仅切割第一个冒号,无需单独硬编码兼容HTTP链接场景,所有值内带冒号的格式都能正常处理
  • 用strip()统一清理空白字符,比手动判断首位字符的写法兼容性更强
  • 自动识别空值转换为None,符合输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:18:26