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

如何用Pandas str.extract提取字典格式字符串中的THIS_id值

解决Pandas提取类似字典字符串中THIS_id字段的问题

方案一:优化正则精准提取

你之前的正则会带出引号,是因为匹配范围没限制好。可以用下面的正则,直接提取'THIS_id': '后面、下一个单引号之前的内容:

import pandas as pd

lista=[ "{'FIRST_id': 'awe', 'THIS_id': 'awec_20230222_1626_i0ov0w', 'NOTTHIS_id': 'awep_20230222_1628_p8f5hd52u3oknc24'}","{'FIRST_id': 'awe', 'THIS_id': 'awec_20230222_1626_i0ov0w', 'NOTTHIS_id': 'awep_20230222_1641_jwjajtals49wc88p'}"]
dfpack=pd.DataFrame(lista,columns=["awesome_config"])

# 提取不带引号的THIS_id
dfpack['THIS_id'] = dfpack['awesome_config'].str.extract(r"'THIS_id': '([^']+)'", expand=False)
print(dfpack['THIS_id'])

这里[^']+的意思是匹配所有不是单引号的字符,刚好精准拿到引号里的内容,不会带引号。

方案二:转成字典再提取(更稳妥)

如果你的字符串格式一直是类似字典的结构,推荐用这种方法——把字符串转成真实的Python字典,再直接取值,哪怕字段顺序变了或者格式有小调整,都能正常工作:

import pandas as pd
import ast

lista=[ "{'FIRST_id': 'awe', 'THIS_id': 'awec_20230222_1626_i0ov0w', 'NOTTHIS_id': 'awep_20230222_1628_p8f5hd52u3oknc24'}","{'FIRST_id': 'awe', 'THIS_id': 'awec_20230222_1626_i0ov0w', 'NOTTHIS_id': 'awep_20230222_1641_jwjajtals49wc88p'}"]
dfpack=pd.DataFrame(lista,columns=["awesome_config"])

# 解析字符串为字典,提取THIS_id
dfpack['THIS_id'] = dfpack['awesome_config'].apply(lambda x: ast.literal_eval(x)['THIS_id'])
print(dfpack['THIS_id'])

ast.literal_eval是安全解析这类字符串的工具,不会像eval有风险,解析完直接用键名'THIS_id'就能拿到纯净值。

最终输出结果:

0    awec_20230222_1626_i0ov0w
1    awec_20230222_1626_i0ov0w
Name: THIS_id, dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:17:37