我正在尝试逐行编写来自我的Python请求的JSON输出。我已经在问题write to file line by line python上的StackOverflow上检查了类似的问题,但没有成功。
代码如下:
myfile = open ("data.txt", "a")
for item in pretty_json["geonames"]:
print (item["geonameId"],item["name"])
myfile.write ("%s\n" % item["geonameId"] + "https://www.geonames.org/" + item["name"])
myfile.close()
这是我pretty_json [“ geonames”]的输出
{
"adminCode1": "FR",
"lng": "7.2612",
"geonameId": 2661847,
"toponymName": "Aeschlenberg",
"countryId": "2658434",
"fcl": "P",
"population": 0,
"countryCode": "CH",
"name": "Aeschlenberg",
"fclName": "city, village,...",
"adminCodes1": {
"ISO3166_2": "FR"
},
"countryName": "Switzerland",
"fcodeName": "populated place",
"adminName1": "Fribourg",
"lat": "46.78663",
"fcode": "PPL"
}
然后,作为输出保存在我的data.txt中,我有:
11048419
https://www.geonames.org/Aïre2661847
https://www.geonames.org/Aeschlenberg2661880
https://www.geonames.org/Aarberg6295535
预期结果应该类似于:
Aïre , https://www.geonames.org/11048419
Aeschlenberg , https://www.geonames.org/2661847
Aarberg , https://www.geonames.org/2661880
用CSV写输出可能是一种解决方案?
致谢。
答案 0 :(得分:0)
如果我理解正确,则希望将相同的屏幕输出到文件。这很容易。如果您使用的是python 3,则只需添加到打印功能即可:
print (item["geonameId"],item["name"], file=myfile)
答案 1 :(得分:0)
使用csv
模块。
例如:
import csv
with open("data.txt", "a") as myfile:
writer = csv.writer(myfile) #Create Writer Object
for item in pretty_json["geonames"]: #Iterate list
writer.writerow([item["name"], "https://www.geonames.org/{}".format(item["geonameId"])]) #Write row.
答案 2 :(得分:0)
只需为所需的项目组合正确的打印格式:
...
for item in pretty_json["geonames"]:
print("{}, https://www.geonames.org/{}".format(item["name"], item["geonameId"]))
示例输出:
Aeschlenberg, https://www.geonames.org/2661847