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

Python转换指定格式字符串为字典列表时报SyntaxError如何解决

问题解决方案

错误原因

  • 构造stud_list的行语法非法:嵌套拆分的逻辑没有正确写在生成式中,连续两个split操作不符合Python语法规则
  • 变量名使用了str,会覆盖Python内置的字符串类型,可能引发后续其他报错
  • 直接遍历字典默认遍历的是字典的键,无法通过stud['studName']取值
  • 目标输出字典是name/value键,原代码也没有做键名映射,就算跑通也得不到要求的结构

修改后的完整代码

input_str = "studId=ValueA,studName=valueB;studId=ValueC,studName=ValueD"
stud_list = []
# 先按分号拆分每个学生的信息块
for item in input_str.split(";"):
    # 按逗号拆分单个学生的两个键值对
    id_part, name_part = item.split(",")
    # 拆分取值后按要求的键名构造字典
    stud_list.append({
        "name": id_part.split("=")[1],
        "value": name_part.split("=")[1]
    })

# 提取输出ValueA,即第一个元素的name属性
print(stud_list[0]["name"])

运行后输出:

ValueA

此时stud_list的值完全符合要求的[{'name':'ValueA','value':'valueB'},{'name':'ValueC','value':'ValueD'}]格式。

简化写法

如果习惯用列表生成式,可以简化为以下代码,功能完全一致:

input_str = "studId=ValueA,studName=valueB;studId=ValueC,studName=ValueD"
stud_list = [{"name": s.split(",")[0].split("=")[1], "value": s.split(",")[1].split("=")[1]} for s in input_str.split(";")]
print(stud_list[0]["name"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:48:02