Python请求JSON输出逐行写入格式异常,求解决及CSV方案评估
解决逐行写入格式问题 & CSV可行性分析
首先看你当前的代码问题:
- 字符串拼接的逻辑搞反了预期的顺序,而且换行符的位置不对,导致内容挤在一起
- 你要的URL是
https://www.geonames.org/[geonameId],但你现在把name拼进去了,这完全搞反了!
先修正你的文本文件写入代码
我给你调整成符合预期格式的版本,顺便用with语句(不用手动关文件,更安全):
# 用with语句自动管理文件,避免忘记关闭的问题 with open("data.txt", "a") as myfile: for item in pretty_json["geonames"]: name = item["name"] geoname_id = item["geonameId"] # 按照预期格式拼接:名称 , URL(带ID) line = f"{name} , https://www.geonames.org/{geoname_id}\n" myfile.write(line) # 同步打印验证效果 print(name, ",", f"https://www.geonames.org/{geoname_id}")
这样写出来的内容就和你预期的完全一致了。
关于CSV格式的可行性:当然可行,而且更推荐!
CSV是专门用来存储结构化表格数据的格式,比纯文本更规范,后续用Excel、Python的Pandas库读取处理都方便很多。
用Python内置的csv模块来写的示例代码:
import csv with open("data.csv", "a", newline="", encoding="utf-8") as csvfile: # 定义表头(可选,第一次写文件时可以启用) fieldnames = ["名称", "geonames链接"] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) # 首次写入时打开这行,生成表头 # writer.writeheader() for item in pretty_json["geonames"]: writer.writerow({ "名称": item["name"], "geonames链接": f"https://www.geonames.org/{item['geonameId']}" })
这样生成的CSV文件,每一行就是一条数据,列清晰,处理起来比纯文本灵活多了。
内容的提问来源于stack exchange,提问作者Pelide
相关产品推荐
相关产品推荐

