如何按指定格式打印JSON课程数据:每行显示一组课程编码与名称
问题:按指定格式打印JSON中的课程信息
用户有一个存储课程信息的JSON文件,希望每行输出一个课程的课程代码(CourseCode)和课程名称(CourseName),格式示例如下:
FHSC1014 MECHANICS
FHCT1024 PROGRAMMING CONCEPT AND DESIGN
但当前编写的Python代码会逐个打印字段名,无法实现预期效果。
附:JSON文件内容
{ "x": [ { "CourseCode" : "FHSC1014", "CourseName" : "MECHANICS" }, { "CourseCode" : "FHCT1024", "CourseName" : "PROGRAMMING CONCEPT AND DESIGN" } ] }
用户尝试的代码
import json # 原代码遗漏了导入json模块 with open("test.json", 'r+') as f: data = json.load(f) x = data['x'] for i in x: for j in i: print(j)
解决方案
不需要嵌套循环,直接遍历每个课程字典,提取对应的CourseCode和CourseName值,使用格式化输出实现对齐:
方法1:制表符分隔(简单快捷)
import json with open("test.json", 'r') as f: data = json.load(f) for course in data['x']: # 用制表符分隔两个字段,快速实现对齐 print(f"{course['CourseCode']}\t{course['CourseName']}")
方法2:指定宽度对齐(精准排版)
如果需要更统一的对齐效果,可以固定课程代码的输出宽度:
import json with open("test.json", 'r') as f: data = json.load(f) for course in data['x']: # 课程代码占10个字符宽度并左对齐,后续拼接课程名称 print("{:<10} {}".format(course['CourseCode'], course['CourseName']))
原代码问题说明
原代码中的嵌套循环for j in i遍历的是字典的键名(即字符串"CourseCode"和"CourseName"),所以会逐个打印这些字段名,而非我们需要的字段值。直接通过键名提取对应的值即可解决问题。
内容的提问来源于stack exchange,提问作者Cheah Ken Win
相关产品推荐
相关产品推荐

