Python中从JSON文件创建纯Python字符串列表的更优方法
更优的Python JSON转纯字符串列表方法
嘿,刚好碰到过类似的场景,咱们来聊聊怎么更高效地解决这个问题~
首先看你的场景,应该是用的Python 2.x(因为输出里有u'xxx'这种Unicode标识),默认情况下json.load会把JSON里的字符串解析成Unicode类型,你现在用列表推导式转成str的方法是可行的,但确实有更简洁高效的实现方式:
方法1:加载JSON时直接指定编码(最优解)
从Python 2.7开始,json模块的load方法支持encoding参数,只要指定编码(比如utf-8),加载后直接得到str类型的字符串列表,不用后续二次转换:
import json # 加载时指定encoding参数 with open('test.json') as out_file: test_data = json.load(out_file, encoding='utf-8') # 直接得到纯str列表 device = test_data['devices'] print(device) # 输出: ['iphone', 'ipad', 'ipod', 'watch']
这个方法的优势是一步到位,不需要额外遍历列表做转换,性能更优,而且你的JSON内容都是ASCII字符,完全适配这个方案。
方法2:更可控的编码转换(适合含非ASCII字符场景)
如果你的JSON里可能包含非ASCII字符,用str(x)可能会出现乱码问题,这时候可以用Unicode的encode方法显式指定编码:
device_list = [x.encode('utf-8') for x in device]
这个方式和你原来的str(x)效果类似,但对非ASCII字符的处理更可控,能避免潜在的编码错误。
补充:Python 3里的情况
如果是用Python 3,根本不需要额外转换——因为json.load默认就会把JSON字符串解析成Python 3的str类型(也就是Unicode字符串,和Python 2的unicode对应,但Python 3里统一叫str),直接用就行。
总结一下:如果你的场景是Python 2+且JSON内容都是ASCII字符,方法1是最推荐的最优解,直接在加载时搞定,省去后续转换步骤。
内容的提问来源于stack exchange,提问作者User12345
相关产品推荐
相关产品推荐

