2016-10-20 4 views
0

Я пытаюсь обработать некоторые журналы и опубликовать содержимое журнала в API для дальнейшей обработки. Прежде чем отправлять данные в API, мне нужно переименовать ключи, но он не работает.Переименование ключа JSON в Python

Это то, что у меня есть до сих пор.

import re 
import json 

logs = ['2016-10-13 17:04:50 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"key1": "data", "key2":"data"}', 
     '2016-10-13 17:05:10 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"key1": "data", "key2":"data"}'] 

newLogs = [] 
for log in logs: 
    data = (re.compile(r"Rs:({[^}]*})").search(log)).group(1)) 
    data.replace('key1','keyA').replace('key2','keyB') 
    newLogs.append(data) 


# Current output - the keys are not changed 
print (newLogs) 
>>>> ['2016-10-13 17:04:50 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"key1": "data", "key2":"data"}', 
     '2016-10-13 17:05:10 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"key1": "data", "key2":"data"}'] 

#Desired output 
print (newLogs) 
>>>> ['2016-10-13 17:04:50 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"keyA": "data", "keyB":"data"}', 
     '2016-10-13 17:05:10 - info - uri:"GET x/y/z" ip:1.1.1.1 Rs:{"keyA": "data", "keyB":"data"}'] 
+0

В чем проблема? Вы получаете исключение? Пожалуйста, обновите вопрос с ошибкой, которую вы получаете. – AKS

+1

Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [MCVE]. –

+0

@AKS Я пытаюсь изменить ключевые значения, но не работает. Таким образом, ошибок нет. – Cryssie

ответ

2

Строки неизменяемы в Python. Таким образом, метод replace возвращает новую строку, которую вы должны захватить в некоторой переменной:

data = data.replace('key1','keyA').replace('key2','keyB') 
+0

Не могу поверить, что я сделал такую ​​ошибку новичка. Я так сильно мчался за своим проектом, что полностью забыл об этом. Это чисто ошибка на моем конце. Спасибо, что указали. – Cryssie

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