2016-10-20 6 views
0

私はいくつかのログを処理しようとしており、さらに処理するためにログの内容をAPIに投稿しようとしています。データをAPIに送信する前に、キーの名前を変更する必要がありますが、動作していないようです。PythonでJSONキーの名前を変更

これはこれまで私が行ってきたことです。

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

関連する問題