Skip to main content
 首页 » 编程设计

python之使用 u' 和 Decimal 值解码字符串中的 Python json

2025年05月04日22lyj

我需要解码并加载到数据库,这是一个以下列格式到达的字符串:

"[{u'date': 1508760000000, u'value': 0}, {u'date': 1509364800000, u'value': Decimal('5.989999771118164')}, {u'date': 1509969600000, u'value': Decimal('5.989999771118164')}, {u'date': 1510574400000, u'value': Decimal('9.579999923706055')}]" 

目前,这是我用来将其转换为数据框的代码:

import pandas as pd 
import json 
 
#json for example: 
my_json="""[{u'date': 1508760000000, u'value': 0}, {u'date': 1509364800000, u'value': Decimal('5.989999771118164')}, {u'date': 1509969600000, u'value': Decimal('5.989999771118164')}, {u'date': 1510574400000, u'value': Decimal('9.579999923706055')}]""" 
my_json=my_json[1:-1] 
my_json=my_json.replace("u'","'") 
my_json=my_json.replace("'",'"') 
my_json=my_json.replace('Decimal("','') 
my_json=my_json.replace('")','') 
my_json=my_json.replace(', {','~ {') 
my_json_list=my_json.split('~') 
my_dict_list=[json.loads(row) for row in my_json_list] 
df=pd.DataFrame(my_dict_list) 

是否有更短/更优雅的方式来执行此操作?

请您参考如下方法:

使用 eval 即

from decimal import * 
df = pd.DataFrame(eval(my_json)) 
 
           date              value 
0  1508760000000                  0 
1  1509364800000  5.989999771118164 
2  1509969600000  5.989999771118164 
3  1510574400000  9.579999923706055