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
相关产品推荐
相关产品推荐

