【问题标题】:How to delete "u'" before the attributes [duplicate]如何删除属性前的“u”[重复]
【发布时间】:2016-12-25 08:23:49
【问题描述】:

当我加载 JSON 文件并打印它时,我会在每个属性之前得到一个“u”

我怎样才能逃脱它?

    try:
        with codecs.open('graphe.json', 'r', 'utf-8') as json_data:
            c = json.load(json_data)
            print c
    except IOError, e:
        print 'IOError : No file in input'

{u'ressourcepath': u'D:\Stage_ete_2016\DjangoProject\resources\', u'Nodes': [{u'title': [u'npq1', u'npq3', u'npq2'],....

JSON

{"ressourcepath": "D:\Stage_ete_2016\DjangoProject\resources\", "节点": [{"title": ["npq1", "npq3", "npq2"],...

所以问题是我使用这本字典来编写 JavaScript 代码(模板),我必须尊重 JavaScript 语法(Vis js):

【问题讨论】:

  • 为什么你认为你需要“删除”这个角色?您面临什么实际问题?
  • 你除了很可能有错误的缩进和 u'' 是 Python 告诉你的方式,你得到了一个 Unicode 字符串
  • 您不是在尝试打印 json。你正在打印 python dict
  • 字符串中没有u 字符。您查看字符串的 representation,其中前导 u 表明该字符串包含 unicode 数据。如果您打印字符串本身,您将看不到u
  • 我使用这个 dict 来构建 JavaScript 代码(django 模板)来识别网络(vis js),但是我必须删除“u”,这样它就不会出现错误语法。 **这里是问题:**

标签: python


【解决方案1】:

u 前缀表示这些字符串是 unicode 而不是 8 位字符串。不显示 u 前缀的最佳方法是切换到 Python 3,其中字符串默认为 unicode。如果这不是一个选项,str 构造函数将从 unicode 转换为 8 位,因此只需递归循环结果并将unicode 转换为str。但是,最好将字符串保留为 unicode。

【讨论】:

  • 我必须解析所有的字典,然后将 str 构造函数应用于每个键/值,这是唯一的解决方案?
  • 没错,你是对的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2010-11-16
  • 2015-03-05
  • 2020-12-06
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多