鱼C论坛

 找回密码
 立即注册
查看: 1292|回复: 4

[已解决]麻烦大师再看看我的问题,谢谢

[复制链接]
发表于 2023-4-12 21:40:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import re
import 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[response.index('{'): response.rindex('}') + 1]
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)

麻烦大师再看看,谢谢
最佳答案
2023-4-12 22:50:27
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[response.index('{'): response.rindex('}') + 1]

# 将所有单引号替换为双引号
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-12 21:44:38 | 显示全部楼层
您好,我注意到您的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[response.index('{'): response.rindex('}') + 1]
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,您应该能够正常运行并获得所需的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-12 22:07:34 | 显示全部楼层
还是出现同样的错误提示,麻烦大师再看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 22:22:11 | 显示全部楼层
futui 发表于 2023-4-12 22:07
还是出现同样的错误提示,麻烦大师再看看

我检查检查那个json字符串有什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 22:50:27 | 显示全部楼层    本楼为最佳答案   
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[response.index('{'): response.rindex('}') + 1]

# 将所有单引号替换为双引号
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 10:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表