麻烦大师再看看我的问题,谢谢
import reimport pandas as pd
import json
response = '''var json={datas:[['80000080','山西证券股份有限公司','1988-07-28','30','怡里','SXZQ','','183.41','★★★','山西证券','','2023/3/8 0:00:00'],['80000095','国都证券股份有限公司','2001-12-28','3','杨权','GDZQ','','0.51','★★★','国都证券','','2022/12/31 0:00:00'],['80066058','中信建投证券股份有限公司','2005-11-02','3','李平','ZXJTZQ','','150.92','','中信建投证券','','2022/12/31 0:00:00'],['80959746','尚正基金管理有限公司','2020-07-16','10','郑祥','SZJJ','','29.88','','尚正基金','','2023/3/15 0:00:00'],['80000124','天风证券股份有限公司','2000-03-29','','琳晶','TFZQ','','','','天风证券','','2020/12/31 0:00:00'],['81067208','路博迈基金管理(中国)有限公司','2021-07-22','2','PATRICK SONG LIU','LBMJJZG','','40.93','','路博迈基金(中国)','','2023/3/21 0:00:00']]}'''
data_str = response
data_str1 = re.sub(r"(\w+):", r'"\1":', data_str)
data_json = json.loads(data_str1)['datas']
column_names = ['证券代码', '证券名称', '成立日期', '人数', '负责人', '负责人所在公司', '负责人电话', '资产净值(亿元)', '评级', '公司名称', '所属板块', '到期日']
df = pd.DataFrame(data_json, columns=column_names).fillna(value=pd.np.nan)
print(df)
出现错误提示:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 12 (char 11)
麻烦大师再看看,谢谢 您好,我注意到您的json字符串中的键不是被双引号包围的,这可能是导致JSONDecodeError错误的原因。在解决这个问题之后,您需要将pd.np.nan替换为np.nan,因为pd.np已经被弃用。
以下是修复后的代码:
import re
import pandas as pd
import numpy as np
import json
response = '''var json={datas:[['80000080','山西证券股份有限公司','1988-07-28','30','怡里','SXZQ','','183.41','★★★','山西证券','','2023/3/8 0:00:00'],['80000095','国都证券股份有限公司','2001-12-28','3','杨权','GDZQ','','0.51','★★★','国都证券','','2022/12/31 0:00:00'],['80066058','中信建投证券股份有限公司','2005-11-02','3','李平','ZXJTZQ','','150.92','','中信建投证券','','2022/12/31 0:00:00'],['80959746','尚正基金管理有限公司','2020-07-16','10','郑祥','SZJJ','','29.88','','尚正基金','','2023/3/15 0:00:00'],['80000124','天风证券股份有限公司','2000-03-29','','琳晶','TFZQ','','','','天风证券','','2020/12/31 0:00:00'],['81067208','路博迈基金管理(中国)有限公司','2021-07-22','2','PATRICK SONG LIU','LBMJJZG','','40.93','','路博迈基金(中国)','','2023/3/21 0:00:00']]}'''
data_str = response
data_str1 = re.sub(r"(\w+):", r'"\1":', data_str)
data_json = json.loads(data_str1)['datas']
column_names = ['证券代码', '证券名称', '成立日期', '人数', '负责人', '负责人所在公司', '负责人电话', '资产净值(亿元)', '评级', '公司名称', '所属板块', '到期日']
df = pd.DataFrame(data_json, columns=column_names).fillna(value=np.nan)
print(df)
这段代码将修复JSON字符串并创建一个DataFrame,您应该能够正常运行并获得所需的结果。 还是出现同样的错误提示,麻烦大师再看看 futui 发表于 2023-4-12 22:07
还是出现同样的错误提示,麻烦大师再看看
我检查检查那个json字符串有什么问题 futui 发表于 2023-4-12 22:07
还是出现同样的错误提示,麻烦大师再看看
import re
import pandas as pd
import numpy as np
import json
response = '''var json={datas:[['80000080','山西证券股份有限公司','1988-07-28','30','怡里','SXZQ','','183.41','★★★','山西证券','','2023/3/8 0:00:00'],['80000095','国都证券股份有限公司','2001-12-28','3','杨权','GDZQ','','0.51','★★★','国都证券','','2022/12/31 0:00:00'],['80066058','中信建投证券股份有限公司','2005-11-02','3','李平','ZXJTZQ','','150.92','','中信建投证券','','2022/12/31 0:00:00'],['80959746','尚正基金管理有限公司','2020-07-16','10','郑祥','SZJJ','','29.88','','尚正基金','','2023/3/15 0:00:00'],['80000124','天风证券股份有限公司','2000-03-29','','琳晶','TFZQ','','','','天风证券','','2020/12/31 0:00:00'],['81067208','路博迈基金管理(中国)有限公司','2021-07-22','2','PATRICK SONG LIU','LBMJJZG','','40.93','','路博迈基金(中国)','','2023/3/21 0:00:00']]}'''
data_str = response
# 将所有单引号替换为双引号
fixed_json = data_str.replace("'", '"')
# 将键名中的单引号替换为双引号
fixed_json = re.sub(r'(?<={|,)(\w+):', r'"\1":', fixed_json)
data_json = json.loads(fixed_json)['datas']
column_names = ['证券代码', '证券名称', '成立日期', '人数', '负责人', '负责人所在公司', '负责人电话', '资产净值(亿元)', '评级', '公司名称', '所属板块', '到期日']
df = pd.DataFrame(data_json, columns=column_names).fillna(value=np.nan)
print(df)
页:
[1]