python 字符串问题处理

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


回答:

有两个库可以试试

一个是: 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)


回答:

可以参照这个答案:how-to-convert-raw-javascript-object-to-python-dictionary

三种方法:

demjson.decode()

jsonnet.evaluate_snippet()

ast.literal_eval()


回答:

用正则处理下吧,写了个函数,测试过可以直接用(参考回答 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

以上是 python 字符串问题处理 的全部内容, 来源链接: utcz.com/a/159035.html

回到顶部