【问题标题】:Convert "\u0000" in False and "\u0001" in True in Python2在Python2中将“\u0000”转换为False,将“\u0001”转换为True
【发布时间】:2020-07-06 13:53:14
【问题描述】:

我在 Python2 中打印像 JSON 这样的字典,我使用的是print(json.dumps(request_dr.data['data'])),但现在我的控制台的输出是:

{
   "id": 711,
   "username": "esteban@gtt",
   "first_name": "esteban@gtt",
   "last_name": "",

    ... Anothers fields

   "passwordChangedOnce": "\u0001",
   "ldapCheck": "\u0000"
 }

那么,我怎样才能将 passwordChangedOnce 转换为 true 并将 ldapCheck 转换为 false,以便得到这样的结果:

{
   "id": 711,
   "username": "esteban@gtt",
   "first_name": "esteban@gtt",
   "last_name": "",

    ... Anothers fields

   "passwordChangedOnce": "true",
   "ldapCheck": "false"
 }

我在 Stack Overflow 中阅读了另一个答案,但没有成功。谢谢

【问题讨论】:

  • “我在 Python2 中打印像 JSON 这样的字典”——两件事:首先,提取一个 minimal reproducible example 并显示代码。其次,为什么你自己写这样的代码,为什么不直接使用 JSON 编解码库?
  • @UlrichEckhardt 我正在使用 json 模块,该模块默认在 Python2 中
  • 请提供minimal reproducible example Python2默认这个模块什么意思?您使用 Python 2 有什么特别的原因吗?
  • 如果 JSON 解码已经完成,你没有 JSON,你只有一个普通的 Python 字典。所以这不是关于 JSON 解码的问题,它是“如何在我的字典中搜索值为 '\u0001' 的键/值对并将其更改为 true?”;为什么要谈论 JSON?

标签: python python-2.x


【解决方案1】:

这没有什么花哨或自动的——如果你想对值进行搜索和替换,编写对值进行搜索和替换的代码

def convertDict(d):
    for (k, v) in d.items():
        if v == '\x00':   # this is the same string that json serializes as "\u0000"
            d[k] = False
        elif v == '\x01': # this is the same string that json serializes as "\u0001"
            d[k] = True
    return d

print(json.dumps(convertDict(request_dr.data['data'])))

【讨论】:

    猜你喜欢
    • 2018-05-28
    • 2014-01-17
    • 2019-08-27
    • 2018-03-09
    • 2022-08-05
    • 2011-12-16
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多