Python 无法以有组织的方式获取输出

Python 无法以有组织的方式获取输出,python,json,python-3.x,web-scraping,Python,Json,Python 3.x,Web Scraping,我已经用python编写了一个脚本,用它们的api从一个网页中刮取一些项目的名称,以及审阅文本和审阅者。问题是我下面的脚本可以部分完成这些事情。我需要有条理地做这些 例如,在每个项目name中,都有多个review text和reviewer name与其相连。我希望让他们沿着如下列: 名称审阅文本审阅者审阅文本审阅者----- 基本上,我不知道如何在我的脚本中以正确的方式使用已经定义的for循环。最后,很少有项目名称没有任何审阅者或审阅者,因此代码在没有找到任何审阅者时中断,依此类推 这就是我

我已经用python编写了一个脚本,用它们的api从一个网页中刮取一些项目的
名称
,以及
审阅文本
审阅者
。问题是我下面的脚本可以部分完成这些事情。我需要有条理地做这些

例如,在每个项目
name
中,都有多个
review text
reviewer name
与其相连。我希望让他们沿着如下列:

名称
审阅文本
审阅者
审阅文本
审阅者
-----

基本上,我不知道如何在我的脚本中以正确的方式使用已经定义的
for循环
。最后,很少有项目
名称
没有任何
审阅者
审阅者
,因此代码在没有找到任何
审阅者
时中断,依此类推

这就是我目前的做法:

import requests

url = "https://eatstreet.com/api/v2/restaurants/{}?yelp_site="

res = requests.get("https://eatstreet.com/api/v2/locales/madison-wi/restaurants")
for item in res.json():
    itemid = item['id']
    req = requests.get(url.format(itemid))
    name = req.json()['name']
    for texualreviews in req.json()['yelpReviews']:
        reviews = texualreviews['message']
        reviewer = texualreviews['reviewerName']
        print(f'{name}\n{reviews}\n{reviewer}\n')
如果我在for循环之外使用print语句,它只会给我一个
review
reviewer


我们将非常感谢您提供的任何帮助。

您需要将审阅和审阅者姓名附加到数组中,以便根据需要显示

请尝试以下代码

review_data = dict()
review_data['name'] = req.json()['name']
review_data['reviews'] = []
for texualreviews in req.json()['yelpReviews']:
    review_sub_data = {'review': texualreviews['message'], 'reviewer': texualreviews['reviewerName']}
    review_data['reviews'].append(review_sub_data)
#O/P {'name': 'xxx', 'reviews':[{'review':'xxx', 'reviewer': 'xxx'}, {'review':'xxx', 'reviewer': 'xxx'}]}

希望这有帮助

当我执行建议的脚本时,它抛出一个错误:
Traceback(最近一次调用last):文件“C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\demo000000.py”,第65行,在review\u data['reviews']中。append(review\u data)keyrolr:'reviews'
我已经进行了编辑。问题在于变量名。现在检查代码。它似乎是以正确的方式工作的,直到它遇到一个容器,其中没有连接到名称的
yelviews
。你能告诉我如何绕过这个错误,因为很少有名字没有评论。顺便说一句,这是我在回溯过程中遇到的错误(最近一次调用):文件“C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\demo000000.py”,第101行,在req.json()中的texualreviews['yelpReviews']:keyrerror:'yelpReviews'。除此之外,请使用try