簡體   English   中英

如何轉換和更改 Json 格式

[英]How to convert and change Json format

我正在嘗試進行網絡抓取,以獲取 url 鏈接並下載它,我被困在 json 格式中。 我想將 format_1 更改為 format_2

format_1= {'result': [{'TITLE': 'title1<br>title2<br>title3',
                       'URL': 'url1<br>url2<br>url3'}]}


format_2 = {'result': [{'TITLE': 'title1', 'URL': 'url1'},
                       {'TITLE': 'title2', 'URL': 'url3'},
                       {'TITLE': 'title3', 'URL': 'url3'}]}

這就是我所做的,我把<br>拆分出來了。

for every_report in format_1['result']:
    titles = every_report['TITLE'].split('<br>')
    pdf_titles = ['This is a title: ' + title for title in titles]
    for x in range(len(pdf_titles)):
        print(pdf_titles[x])

for every_report in format_1['result']:
    urls = every_report['URL'].split('<br>')
    pdf_urls = ['http://static.sse.com.cn' + url for url in urls]
    for x in range(len(pdf_urls)):
        print(pdf_urls[x])

這是 output

title1
title2
title3
url1
url2
url3

接下來我應該怎么做才能讓它們變成 format_2

{'result': [{'TITLE': 'title1', 'URL': 'url1'},
            {'TITLE': 'title2', 'URL': 'url3'},
            {'TITLE': 'title3', 'URL': 'url3'}]}

因為我想從列表中獲取每個URL ,下載它,並用TITLE命名。 這部分的代碼是這樣的(可能有錯誤,因為我沒有機會嘗試它,因為我一直在編譯我需要的格式)

for every_report in my_format['result']:
        pdf_url = 'this is ths url: ' + every_report['URL']
        print(pdf_url)
        file_name = every_report['TITLE'] + '.pdf'

        resource = requests.get(pdf_url, stream = True)
        with open(file_name, 'wb') as temp:
            for chunk in resource.iter_content(1024):
                temp.write(chunk)
            print("This is the title: " + file_name + " Download Completed")

結果應該有: 下載文件到項目 Output 供參考

Title1
url1
Title2
url2
Title3
url3

url應該是一個真實的網站 url,但是它太長了,所以我在這里用url替換它。

您可以使用它(我使用了列表理解):

def change_json_format(json_format):
    return {'result': [
        {'TITLE': title, 'URL': url} 
                for title, url in zip(
                    json_format['result'][0]['TITLE'].split('<br>'),
                    json_format['result'][0]['URL'].split('<br>')
                    )]}


# testing ...
format_1 = {'result': [
    {'TITLE': 'title1<br>title2<br>title3',
     'URL': 'url1<br>url2<br>url3'}]}

print(change_json_format(format_1))

output:

{'result': [{'TITLE': 'title1', 'URL': 'url1'}, {'TITLE': 'title2', 'URL': 'url2'}, {'TITLE': 'title3', 'URL': 'url3'}]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM