値:デコードAUの文字列でPythonのJSON」と10進私がデコードおよびDB、次の形式で到着した文字列にロードする必要が
"[{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)
これを行うには、よりエレガントな方法がありますか?
文字列は有効 'json'ではありません。 –
その文字列はどこから来たのですか? 'dict'のpython' list'の 'print'(各文字列の前に' u'がUnicode文字列であることを意味します)からコピーされたもので、実際には有効なJSONではないようです。 – Galen
文字列を 'ast'を使ってリテラル構造に変換することができます: ' import ast; ast.literal_eval(文字列) 'しかし、あなたのケースでは、Decimalオブジェクトがあり、それは動作しませんが、あなたが問題を解決するこの[回答](https://stackoverflow.com/a/18178379/3540693)をチェックすることができます。 – Pentux