簡體   English   中英

使用Python將新的鍵/值對添加到JSON文件

[英]Adding new key-value pairs to JSON files using Python

我有一組包含一些信息的JSON文件。以下數據是鍵'BrowserInfo'的值。我想從下面提供的內容中提取以下信息TitleLinksBrowserPlatformCPUs ,將上述字段添加為JSON文件中的密鑰並提取其值並分配給這些密鑰。

標題:全球最佳網站| mywebsite.com
友情鏈接:225
瀏覽器:Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36 Ubuntu Chromium / 41.0.2272.76 Chrome / 41.0.2272.76 Safari / 537.36
平台:Linux x86_64
處理器:8

我已經編寫了一個python程序,以下降到目錄中並從JSON文件中提取“ BrowserInfo”值。

# Set the directory you want to start from
rootDir = '/home/space'
for dirName, subdirList, fileList in os.walk(rootDir):
    print('Found directory: %s' % dirName)
    for fname in fileList:
        fname='space/'+fname
        with open(fname, 'r+') as f:
            json_data = json.load(f)
            BrowserInfo = json_data['BrowserInfo']
            print(BrowserInfo)

如何使用Python提取值並將新的鍵值對添加到JSON文件。

假設( 這似乎是一個很大的假設 ), BrowserInfo包含換行符分隔的鍵,值對,並用': '分隔,您可以使用以下命令提取鍵/值:

for line in BrowserInfo.splitlines():
    k,v = line.split(': ', 1)

然后只需將它們插入字典中的任何位置即可,例如:

json_data['BrowserInfo'] = {}
for line in BrowserInfo.splitlines():
    k,v = line.split(': ', 1)
    json_data['BrowserInfo'][k] = v

快速演示演示

>>>import re, itertools

>>> BrowserInfo
'Title: Worlds best websit | mywebsite.com\nLinks: 225\nBrowser: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Ubuntu Chromium/41.0.2272.76 Chrome/41.0.2272.76 Safari/537.36\nPlatform: Linux x86_64\nCPUs: 8'

>>> re.split(':|\n', BrowserInfo)
['Title', ' Worlds best websit | mywebsite.com', 'Links', ' 225', 'Browser', ' Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Ubuntu Chromium/41.0.2272.76 Chrome/41.0.2272.76 Safari/537.36', 'Platform', ' Linux x86_64', 'CPUs', ' 8']

>>> s = re.split(':|\n', BrowserInfo)
>>> {pair[0].strip():pair[1].strip() for pair in itertools.izip(s[::2], s[1::2])}
{'Platform': 'Linux x86_64', 'Browser': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Ubuntu Chromium/41.0.2272.76 Chrome/41.0.2272.76 Safari/537.36', 'CPUs': '8', 'Links': '225', 'Title': 'Worlds best websit | mywebsite.com'}

從而

json_data['BrowserInfo'] = {pair[0].strip():pair[1].strip() for pair in itertools.izip(s[::2], s[1::2])}

將是你的json

暫無
暫無

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

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