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

如何使用正则表达式基于唯一字符序列解析DataFrame列数据

DataFrame带逗号键值对列解析实现方案

核心实现思路

严格遵循给定的边界判定规则,不直接使用逗号做全局分割:

  • 先定位字符串中所有等号的位置
  • 从第二个等号开始,向前查找距离当前等号最近的逗号,作为前一个键值对的分割边界
  • 按收集到的边界切割字符串,得到完整键值对,最终转为结构化字典格式,方便直接映射为DataFrame列

完整代码

import pandas as pd

def parse_kv_str(input_str: str) -> dict:
    # 收集所有等号的索引位置
    eq_indexes = [i for i, c in enumerate(input_str) if c == '=']
    if not eq_indexes:
        return {}
    
    split_points = []
    last_split = 0
    # 从第二个等号开始,向前找最近的逗号作为分割点
    for eq_idx in eq_indexes[1:]:
        for i in range(eq_idx - 1, last_split - 1, -1):
            if input_str[i] == ',':
                split_points.append(i)
                last_split = i
                break
    
    # 按分割点切取所有键值对
    kv_pairs = []
    start = 0
    for sp in split_points:
        kv_pairs.append(input_str[start:sp].strip())
        start = sp + 1
    kv_pairs.append(input_str[start:].strip())
    
    # 转为键值对字典,兼容值内包含等号的场景
    parsed = {}
    for pair in kv_pairs:
        if '=' in pair:
            key, value = pair.split('=', 1)
            parsed[key.strip()] = value.strip()
    return parsed

# 单字符串测试
if __name__ == "__main__":
    # 测试用例1
    s1 = "NAME=TEST,TEST ID=1234,ENTRY DESCR=Verify,ENTRY CLASS=CCD,TRACE NO=124313523,12414,ENTRY DATE=210506"
    print(parse_kv_str(s1))
    # 输出: {'NAME': 'TEST', 'TEST ID': '1234', 'ENTRY DESCR': 'Verify', 'ENTRY CLASS': 'CCD', 'TRACE NO': '124313523,12414', 'ENTRY DATE': '210506'}
    
    # 测试用例2
    s2 = "DESCRIPTION=TEST,TEST,TEST"
    print(parse_kv_str(s2))
    # 输出: {'DESCRIPTION': 'TEST,TEST,TEST'}

DataFrame批量应用方法

假设原始DataFrame为df,存储待解析字符串的列名为raw_content,可通过如下代码批量解析并合并为结构化列:

# 批量解析整列,转为结构化列
parsed_cols = df['raw_content'].apply(parse_kv_str).apply(pd.Series)
# 合并回原DataFrame
final_df = pd.concat([df, parsed_cols], axis=1)

适配说明

  • 完全兼容值内自带逗号的场景,不会错误切割值内容
  • 键值对拆分时仅按第一个等号切割,可兼容参数值本身包含等号的极端场景
  • 无有效等号的异常字符串会返回空值,不会中断批量解析流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:21:21