如何将URL获取的JSON字符串转换为Python DataFrame并导入Oracle
把JSON格式字符串转成Pandas DataFrame的方案
你拿到的这个字符串是标准JSON数组格式,完全没必要手动循环拆分,用Python的json模块或者Pandas自带的方法就能直接转成DataFrame,比手动处理靠谱多了:
方法一:直接用Pandas读取JSON字符串
import pandas as pd # 假设你的原始数据字符串是data_str data_str = '[{"date_of_fix ":"9\/4\/2023","fix_description":"Broken report links\r","issue_no ":"1788"},{"date_of_fix ":"8\/30\/2023","fix_description":"Icon on password fields","issue_no ":"1769"},{"date_of_fix ":"8\/21\/2023","fix_description":"Add Tracking to Quote Page\r","issue_no ":"1744"}]' # 直接转成DataFrame df = pd.read_json(data_str) # 清理列名里的多余空格(比如"date_of_fix "后面的空格) df.columns = df.columns.str.strip() # 查看结果 print(df)
方法二:先解析JSON再转DataFrame
如果需要先对数据做额外处理,可以先用json模块解析成Python列表,再转DataFrame:
import pandas as pd import json data_str = '[{"date_of_fix ":"9\/4\/2023","fix_description":"Broken report links\r","issue_no ":"1788"},{"date_of_fix ":"8\/30\/2023","fix_description":"Icon on password fields","issue_no ":"1769"},{"date_of_fix ":"8\/21\/2023","fix_description":"Add Tracking to Quote Page\r","issue_no ":"1744"}]' # 解析JSON字符串为Python字典列表 parsed_data = json.loads(data_str) # 转成DataFrame df = pd.DataFrame(parsed_data) # 清理列名空格 df.columns = df.columns.str.strip()
(不推荐)手动循环拆分的方式
如果一定要手动处理(不建议,容易因为特殊字符出错),可以这么做:
import pandas as pd data_str = '[{"date_of_fix ":"9\/4\/2023","fix_description":"Broken report links\r","issue_no ":"1788"},{"date_of_fix ":"8\/30\/2023","fix_description":"Icon on password fields","issue_no ":"1769"},{"date_of_fix ":"8\/21\/2023","fix_description":"Add Tracking to Quote Page\r","issue_no ":"1744"}]' # 去掉首尾的[] clean_str = data_str.strip('[]') # 拆分每个对象 items = clean_str.split('},{') result = [] for item in items: # 给每个对象补回前后的{}(拆分后丢了) item = '{' + item + '}' # 拆分键值对,这里要注意如果值里有逗号会出错,所以这方法局限性大 pairs = item.strip('{}').split(',') row_dict = {} for pair in pairs: key, value = pair.split(':', 1) # 清理键和值的引号、空格 key = key.strip().strip('"') value = value.strip().strip('"').replace('\r', '') row_dict[key.strip()] = value result.append(row_dict) df = pd.DataFrame(result)
转成DataFrame后,你就可以用pandas.io.sql里的to_sql方法直接插入Oracle数据库了,记得先配置好数据库连接。
内容的提问来源于stack exchange,提问作者Landon Statis
相关产品推荐
相关产品推荐

