python - 在 Python 中重命名 JSON 键

标签 python json

我正在尝试处理一些日志并将日志内容发布到 API 进行进一步处理。在将数据发布到 API 之前,我需要重命名 key ,但它似乎不起作用。

这就是我到目前为止所拥有的。

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"}']

最佳答案

Python 中的字符串是不可变的。因此,方法 replace 返回一个新字符串,您必须在某个变量中捕获该字符串:

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

关于python - 在 Python 中重命名 JSON 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40148122/

相关文章:

python - 在没有数据库的情况下在 Django 中进行身份验证

java - 使用 Jackson 将 WRAPPER_OBJECT 键反序列化为属性

javascript - 在 Backbone-Relational 中定义关系——不确定选项指向哪个方向?

python - 如何在 Pandas DataFrame 中将可变大小的基于字符串的列拆分为多列?

Python:可以将解码项与原始行号相关联的JSON解码库?

python - Django:模型 OneToOneField 与用户无法添加默认值

java - 如何使用 GSON 解析复杂的 JSON 字符串与 JSON 数组的混合?

javascript - 从字符串中删除 html 实体以修复 JSON 错误中的意外标记

javascript - 将事件加载到 FullCalendar

python - Pytest fixture 返回倍数