如何逐行写入请求输出

时间:2019-07-30 09:04:49

标签: python

我正在尝试逐行编写来自我的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写输出可能是一种解决方案?

致谢。

3 个答案:

答案 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