Python新手遇TypeError: dump()缺'fp'参数,求DOTA2英雄名提取帮助
解决DOTA2英雄名提取的问题
问题根源
- URL错误:你请求的是GitHub的Blob页面(HTML格式),不是原始JSON文件,无法直接解析成JSON数据。
json.dump()用法错误:这个方法是用来将数据写入文件对象的,必须传入数据和文件指针(fp)两个参数;如果要把数据转为字符串,应该用json.dumps()。
修正后的代码
import json import requests # 使用原始JSON文件的地址,而非GitHub页面链接 url = 'https://raw.githubusercontent.com/kronusme/dota2-api/master/data/heroes.json' response = requests.get(url) # 将响应解析为Python字典/列表 heroes_data = response.json() # 提取所有英雄的本地化名称 hero_names = [hero['localized_name'] for hero in heroes_data] # 转为JSON字符串 hero_names_str = json.dumps(hero_names, ensure_ascii=False) print(hero_names_str) # 保存为文本文件(每行一个英雄名) with open('dota2_heroes.txt', 'w', encoding='utf-8') as f: f.write('\n'.join(hero_names))
代码说明
- 替换URL为GitHub原始文件地址,确保请求到的是纯JSON数据
- 用
response.json()直接解析响应内容为Python对象,无需手动处理字符串 - 用列表推导式提取英雄名,简洁高效
json.dumps()将英雄名列表转为JSON字符串;如果要保存到文件,直接写入文本更直观
内容的提问来源于stack exchange,提问作者user20287787
相关产品推荐
相关产品推荐

