我有一组包含一些信息的JSON文件。下面的数据是关键'BrowserInfo'的值。我想提取以下信息
来自下面给出的Title
,Links
,Browser
,Platform
,CPUs
,将上述字段添加为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
CPU: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文件中。
答案 0 :(得分:1)
假设,(这似乎是一个很大的假设),BrowserInfo
包含由': '
分隔的换行符分隔的键值组,您可以提取键/值with:
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
答案 1 :(得分:0)
解析的快速演示
>>>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