免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python解析非標(biāo)準(zhǔn)JSON(Key值非字符串)

采集數(shù)據(jù)的時候經(jīng)常碰到一些JSON數(shù)據(jù)的Key值不是字符串,這些數(shù)據(jù)在JavaScript的上下文中是可以解析的,但在Python中,沒有該部分?jǐn)?shù)據(jù)的上下文,無法采用json.loads(JSON)的形式導(dǎo)入。在網(wǎng)上搜集來一些方法以便日后使用。

方法一:

def parse_js(expr): ''' 解析非標(biāo)準(zhǔn)JSON的Javascript字符串,等同于json.loads(JSON str) :param expr:非標(biāo)準(zhǔn)JSON的Javascript字符串 :return:Python字典 ''' obj = eval(expr, type('Dummy', (dict,), dict(__getitem__=lambda s, n: n))()) return obj

方法二(推薦)

def parse_js(expr): ''' 解析非標(biāo)準(zhǔn)JSON的Javascript字符串,等同于json.loads(JSON str) :param expr:非標(biāo)準(zhǔn)JSON的Javascript字符串 :return:Python字典 ''' import ast m = ast.parse(expr) a = m.body[0] def parse(node): if isinstance(node, ast.Expr): return parse(node.value) elif isinstance(node, ast.Num): return node.n elif isinstance(node, ast.Str): return node.s elif isinstance(node, ast.Name): return node.id elif isinstance(node, ast.Dict): return dict(zip(map(parse, node.keys), map(parse, node.values))) elif isinstance(node, ast.List): return map(parse, node.elts) else: raise NotImplementedError(node.__class__) return parse(a)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python實現(xiàn)遞歸解析json
成功解決TypeError: Object of type ''ndarray'' is not JSON serializable
Flask-SQLAlchemy直接用sql或Join查詢出Row對象處理
Linux shell腳本之 if條件判斷
Python非標(biāo)準(zhǔn)的日期字符串處理(解析、轉(zhuǎn)換、比較) | 王曄的流水賬
python 中的小問題(持續(xù)更新中)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服