python 字符串问题处理

{
    "rs": [
        ["outer", [{
                "$u": "f45V6r"
            },
            [
                ["zul.sel.Listbox", 'f45V6r', {
                        id: 'lstbEwbInfo',
                        $onSelect: true,
                        $onClick: true,
                        $onTopPad: false,
                        $onDataLoading: true,
                        $onDoubleClick: true,
                        vflex: 'true',
                        prolog: '\n\t\t\t\t\t\t\t\t\t\t\t\t',
                        emptyMessage: '没有符合条件的数据',
                        model: true,
                        _topPad: 0,
                        _totalSize: 50,
                        _offset: 0,
                        _listbox$rod: true,
                        _listbox$noSelectAll: true,
                        nonselectableTags: "",
                        paginal: {
                            $u: 'f45V7r'
                        }
                        
                        
                        

这个是我抓下来的数据,但是数据中有的字符串没有双引号,有的字符串有单引号,这样不能json格式化字典,请问这种情况如何让json 格式化字典呢?处理里面的没有双引号的字符,单引号直接替换双引号就可以了,但是没有引号的那些,如何变双引号呢?

因为字符串太长了,我只复制了其中部分,谢谢。否则我无法json.loads

阅读 3.1k
4 个回答

有两个库可以试试

一个是: ast.literal_eval()

>>> import ast
>>> s = "{'username':'dfdsfdsf'}"
>>> ast.literal_eval(s)
{'username': 'dfdsfdsf'}

demjson也是解决json语法错误问题的好方法:

pip install demjson

用法:

from demjson import decode
bad_json = "{'username':'dfdsfdsf'}"
python_dict = decode(bad_json)

demjson.decode对于损坏的json来说,它是一个很棒的工具,但是当你处理大量的 json 数据时,ast.literal_eval能更好地匹配,并且更快。

demjson库,可以处理非标准的json格式。步骤:
1.pip install demjson
2.import demjson
3.demjson.decode(s)

用正则处理下吧,写了个函数,测试过可以直接用(参考回答 https://segmentfault.com/q/10... ,因为不用考虑字符串对象里包含的冒号,去掉了一部分多余代码)

def quote_keys_for_json(json_str):
    #先把单引号替换成双引号以及去掉空白字符
    json_str = json_str.replace("'",'"')
    json_str = re.sub("\s+", "", json_str)
    #给键值加上双引号
    key_pat = re.compile(r'([\w$]+):')
    json_str = key_pat.sub(r'"\1":', json_str)
    return json_str
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题