Python中print分隔符未生效及生成JSON数组的需求
问题解决方法
1. 输出带正确逗号分隔的结果
原代码里print的sep参数无效,因为它是用来分隔print函数多个参数的,你每次只传了一个值,自然不会生效。正确做法是先把所有数据收集到列表,再统一处理:
import json from bs4 import BeautifulSoup soup = BeautifulSoup(response.text,'lxml') elements = soup.select('div.button.m') data_items = [] for item in elements: # 先把data属性的字符串转成字典,避免后续格式出错 data = json.loads(item.attrs['data']) data_items.append(data) # 把每个字典转成JSON字符串后用逗号连接输出 print(', '.join(json.dumps(item) for item in data_items))
2. 直接生成可导入的JSON数组结构
如果要输出{"list": [...]}这种标准JSON格式,直接构造目标结构后转成JSON字符串即可:
import json from bs4 import BeautifulSoup soup = BeautifulSoup(response.text,'lxml') elements = soup.select('div.button.m') data_list = [] for item in elements: data = json.loads(item.attrs['data']) data_list.append(data) # 构造需要的JSON结构 final_result = {"list": data_list} # 输出格式化后的JSON(要紧凑格式就去掉indent参数) print(json.dumps(final_result, indent=2))
补充提示
- 必须把
data属性的字符串转成字典再处理,否则原字符串的特殊字符可能导致JSON解析失败 - 别用循环里加
end=','的方式,会留下末尾多余逗号,无法直接导入JSON
内容的提问来源于stack exchange,提问作者Nikolay
相关产品推荐
相关产品推荐

