如何在python dict中将null替换为'null'

时间:2019-03-09 02:53:14

标签: python-3.x string dictionary

这可能是一个愚蠢的问题。我想在python中将dict从null替换为'null'。

mydict = {"headers": {"ai5": "8fa683e59c02c04cb781ac689686db07", "debug": null, "random": **null**, "sdkv": "7.6"}, "post": {"event": "ggstart", "ts": "1462759195259"}, "params": {}, "bottle": {"timestamp": "2016-05-09 02:00:00.004906", "game_id": "55107008"}}

我无法在python中执行任何字符串操作,因为它会引发错误:

NameError: name 'null' is not defined

我有18000个此类数据的巨大文件,我无法手动执行。

请帮助。

3 个答案:

答案 0 :(得分:0)

您可以尝试类似的方法。它将每个 null 替换为'null',并将其存储到新文件中。  将其存储到同一文件中或将其写入新文件,然后将其替换为原始文件由您决定。

import re
f_handle = open("test.txt","r+")
f_2 = open("result.txt","w+")
for f_string in f_handle.readlines():
    print(f_string)
    f_result = re.sub(r'(?:^|\W)null(?:$|\W)',"'null'",f_string)
    print(f_result)
    f_2.write(f_result)
f_handle.close()
f_2.close()

答案 1 :(得分:0)

您不需要更换任何东西。只需加载文件并将数据转换为字典即可。

import json
import pprint

with open('x.json') as f:
    data = json.load(f)
    pprint.pprint(data)

输入(x.json)

{
  "headers": {
    "ai5": "8fa683e59c02c04cb781ac689686db07",
    "debug": null,
    "random": null,
    "sdkv": "7.6"
  },
  "post": {
    "event": "ggstart",
    "ts": "1462759195259"
  },
  "params": {},
  "bottle": {
    "timestamp": "2016-05-09 02:00:00.004906",
    "game_id": "55107008"
  }
}

输出

{'bottle': {'game_id': '55107008', 'timestamp': '2016-05-09 02:00:00.004906'},
 'headers': {'ai5': '8fa683e59c02c04cb781ac689686db07',
             'debug': None,
             'random': None,
             'sdkv': '7.6'},
 'params': {},
 'post': {'event': 'ggstart', 'ts': '1462759195259'}}

答案 2 :(得分:0)

import json
x = json.loads(mydict)

然后您的 dict 中的 null 将更改为 ""