从JSON文件中提取数据时进行编码

时间:2015-03-29 05:57:28

标签: python json

我有一个简单的python脚本,如下所示。

with open(fname, 'r+') as f:
        json_data = json.load(f)
        message = json_data['Info']
        for line in message.split('<br>'):
                if(len(line) < 25):
                        print(line)
                        if ':' in line:
                                k,v = line.strip().split(':')
                                print(k,v)

我得到k,v采用以下格式

(u'Images', u' 23')
(u'Links', u' 225')

message输出如下所示。

Title: Worlds best websit | mywebsite.com
Links: 225
Images: 23
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

我想提取数据Images:23Links:225,并将其更新为脚本中的同一个json文件f

如果我要做的话

json_data[k] = v
json.dump(json_data,f)

它破坏了JSON文件。意思是如果我将上面两行添加到我的代码中。 并做

cat output.json | python -m json.tool
从命令行

。我收到以下错误。

Extra data: line 2 column 1 - line 2 column 45376 (char 2139 - 47514)

我不明白什么是&#39;你&#39;在输出?它是某种编码吗?如果是,我该如何处理?

1 个答案:

答案 0 :(得分:-1)

试试这个

import sys
import json
import re

fname = sys.argv[1]

openedFile = open(fname, 'r')
content = openedFile.read()
openedFile.close()

pattern = "Links: (\d+?)\nImages: (\d+?)"

matchObj = re.search(pattern, content)
if matchObj:
    openedFile = open(fname, 'w')
    newContent = {'Links': matchObj.group(1), 'Images': matchObj.group(2)}
    json.dump(newContent, openedFile)
    openedFile.close()