正在删除Scrapy pipelin中的重复项值

2024-10-01 17:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在.json文件中保存了一些结果,格式如下:

(每行一项)

{"category": ["ctg1"], "pages": 3, "websites": ["x1.com","x2.com","x5.com"]}
{"category": ["ctg2"], "pages": 2, "websites": ["x1.com", "d4.com"]}
                    .
                    .

我试图删除重复值,但没有删除整个项目,但没有成功。在

代码:

^{pr2}$

Tags: 文件项目代码comjson格式pageswebsites
1条回答
网友
1楼 · 发布于 2024-10-01 17:23:29

不要删除重复项,只需重新生成不在ids_seen列表中的站点列表。下面的示例代码应该可以工作,尽管它不在类结构中。在

import json


line1 = '{"category": ["ctg1"], "pages": 3, "websites": ["x1.com","x2.com","x5.com"]}'
line2 = '{"category": ["ctg2"], "pages": 2, "websites": ["x1.com", "d4.com"]}'

lines = (line1, line2)

ids_seen = set()

def process_item(item):
    item_unique_sites = []
    for site in item['websites']:
        if not site in ids_seen:
            ids_seen.add(site)
            item_unique_sites.append(site)
    # Delete the duplicates
    item['websites'] = item_unique_sites
    line = json.dumps(dict(item), ensure_ascii=False) + "\n"
    print line
    #self.file.write(line)
    return item


for line in lines:
    json_data = json.loads(line)
    process_item(json_data)

相关问题 更多 >

    热门问题