首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过for循环将列表条目附加到JSON文件中?

如何通过for循环将列表条目附加到JSON文件中?
EN

Stack Overflow用户
提问于 2022-11-13 09:11:04
回答 1查看 39关注 0票数 0

在下面的代码中,我试图将每个oth元素附加到JSON文件中:

代码语言:javascript
复制
title = []  # api_result['search_results']['title']
asin = []  # api_result['search_results']['asin']
link = []  # api_result['search_results']['link']
categories = []  # api_result['search_results']['categories'][0]['name']
image_url = []  # api_result['search_results']['image']
rating = []
rating_total = []
price = []  # apit_result['prices'][0]['value']
top_positive_review = []
top_positive_review_rating = []
top_critical_review = []
top_critical_review_rating = []
ratings_total_filtered = []  # apit_result['']
reviews_total_filtered = []
reviews_total = []
reviews = []

for o in range(len(title)):
    with open("metadata.jsonl", "w+") as outfile:
        entry = {
                'title': title[o],
                'asin': asin[o],
                'link': link[o],
                'categories': categories[o],
                'image_url': image_url[o],
                'rating': rating[o],
                'rating_total': rating_total[o],
                'price': price[o],
                'top_positive_review': top_positive_review[o],
                'top_positive_review_rating': top_positive_review_rating[o],
                'top_critical_review': top_critical_review[o],
                'top_critical_review_rating': top_critical_review_rating[o],
                'ratings_total_filtered': ratings_total_filtered[o],
                'reviews_total_filtered': reviews_total_filtered[o],
                'reviews_total': reviews_total[o],
                'reviews': reviews[o]}

我认为这不是正确的做法。基本上,我希望在metadata.jsonl文件中有这样的条目:

代码语言:javascript
复制
{"title":"some title", "asin":"ABCDEF", ...}
{"title":"another title", "asin":"GHIJKL", ...}
...

我哪里出问题了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-13 09:24:59

必须只使用with open块打开文件一次,否则每次迭代时都会打开和关闭文件。

此后,只需在每次迭代时结束。

看看这段代码:

代码语言:javascript
复制
import json

# I am assuming your data in this form
title = ['title_0', 'title_1']
link = ['link_0', 'link_1']

with open("metadata.jsonl", "w") as file:
    for o in range(len(title)):
        entry = {
            'title': title[o],
            'link': link[o],
        }
        json_object = json.dumps(entry, ensure_ascii=False)  # on line json
        file.write(json_object)
        file.write("\n")

产出将是:

代码语言:javascript
复制
{"title": "title_0", "link": "link_0"}
{"title": "title_1", "link": "link_1"}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74419713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档