2015-03-29 3 views
0

У меня есть простой скрипт python, как показано ниже.кодирование при извлечении данных из файла JSON

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:23 и Links:225 и обновления, которые к тому же JSon файл f в сценарии.

Если бы я сделать

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

это развращает JSON file.Meaning Если добавить вышеуказанные две строки в моем коде. и сделать

cat output.json | python -m json.tool 

из команды line.I получить следующее сообщение об ошибке.

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

Я не понимая, что такое «у» на выходе? Это какая-то кодировка? Если да, то как это сделать?

+0

U '' notates Юникода объект строки в Python 2. –

+0

я вижу. Как извлечь данные и добавить их обратно в файл? – liv2hak

+0

Что значит «это развращает json»? Вы закрываете и повторно открываете файл между тем, когда вы вызываете 'load' и' dump'? – jedwards

ответ

-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() 
+0

не json_dump() подразумевает запись в файл? – liv2hak

+0

Да, json_dump() позволяет записать в файл. Если json-файл открыт в режиме r +, он позволяет вам читать, а также записывать в файл – srekcahrai

+0

. Тогда почему вы предлагаете открыть файл в режиме «r»? – liv2hak

Смежные вопросы