Python解析JSON格式字符串提取斜杠后内容的问题
正确解析目标字符串并提取斜杠后内容的方案
嘿,这个问题其实有好几种解决办法,其中最稳妥的是用Python内置的json模块来处理——毕竟你的输入字符串本身就是标准的JSON数组格式,完全不用手动去折腾引号和逗号,能避开很多容易踩的小坑!
最优解:用json模块解析
直接把字符串转成Python列表,再提取每个元素的后半部分,代码简洁又可靠:
import json val = '["10249/54","10249/147","10249/187","10249/252","10249/336"]' # 解析JSON字符串为Python列表 parsed_items = json.loads(val) # 提取每个元素斜杠后的内容 target_list = [item.split('/')[1] for item in parsed_items] print(target_list) # 输出: ['54', '147', '187', '252', '336']
改进你原来的手动处理方案
如果你不想用json模块,也可以修正你之前的代码:
你最初的列表推导式出错,是因为val[1:-1].split(',')得到的每个元素是带双引号的(比如'"10249/54"'),直接截取会把末尾的引号也带上。只要先去掉每个元素的前后引号,再处理就没问题了:
改进版列表推导式
val = '["10249/54","10249/147","10249/187","10249/252","10249/336"]' target_list = [a.strip('"').split('/')[1] for a in val[1:-1].split(',')]
这里用strip('"')比手动a[1:-1]更灵活,能处理可能存在的空格(不过你的输入里没有)。
完善你的循环方案
你之前的循环思路是对的,只要把最后一步补全就行:
val = '["10249/54","10249/147","10249/187","10249/252","10249/336"]' c = [] for a in val[1:-1].split(','): tmp = a.strip('"') # 去掉前后双引号 c.append(tmp.split('/')[1]) # 分割后取第二部分 print(c) # 输出正确结果
小提醒
手动切割字符串虽然能解决当前问题,但如果以后你的输入字符串出现复杂情况(比如元素里有转义的双引号、空格等),手动处理很容易出错。所以优先推荐用json模块的方案,兼容性和健壮性都更强。
内容的提问来源于stack exchange,提问作者PGS
相关产品推荐
相关产品推荐

