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 decodebad_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