首页 > 编程问答 >将字符串转换为json格式

将字符串转换为json格式

时间:2024-07-30 15:50:48浏览次数:17  
标签:python json excel dictionary powerquery

我有一个 Excel 电子表格,当我直接在 python 中读取它时,它失败了。所以我先在Power Query中读,然后在python中读,但是在Power Query中读时丢失了json双引号。

我尝试了demjson3,但无法成功。 我尝试用Python逐行阅读,这不是一个好主意。 我希望能够在 python 中将其呈现为 json。

主文件是:
在此处输入图像描述

处理后的 Power Query 文件:
在此处输入图像描述


我明白你的问题了。你需要把 Power Query 处理后的类 JSON 字符串转换为有效的 JSON 格式。因为 Power Query 省略了必要的双引号,所以你需要手动添加它们。

以下 Python 代码片段可以帮助你实现这个目标:

import json

def format_json(input_string):
  """将 Power Query 输出的类 JSON 字符串转换为有效的 JSON 格式。

  Args:
    input_string: Power Query 输出的字符串。

  Returns:
    有效的 JSON 字符串或引发异常。
  """
  formatted_string = input_string.replace('{', '{"').replace('}', '"}').replace(':', '":"', 1).replace(',', '","').replace('"[', '[').replace(']"', ']').replace('"{', '{').replace('}"', '}')
  try:
    json.loads(formatted_string)  # 验证格式是否正确
    return formatted_string
  except json.JSONDecodeError as e:
    raise ValueError(f"Invalid JSON format: {e}") from e


# 示例用法
power_query_output = "{Country: US, Weather: Sunny, Temperature: 25}"
try:
  valid_json = format_json(power_query_output)
  print(valid_json)  # 输出: {"Country": "US", "Weather": "Sunny", "Temperature": "25"}
except ValueError as e:
  print(f"Error: {e}") 

这段代码做了以下事情:

  1. 定义了一个名为 format_json 的函数,它接受一个字符串作为输入。
  2. 使用字符串替换方法将 { 替换为 {" } 替换为 "} : 替换为 ": " , 替换为 ", " ,以便添加缺失的双引号。
  3. 尝试使用 json.loads() 将格式化后的字符串解析为 JSON 对象。如果解析成功,则返回格式化后的字符串;否则,引发 ValueError 异常,指示格式无效。

你可以将 Power Query 输出的每一行传递给 format_json 函数,将其转换为有效的 JSON 字符串。

注意: 这个解决方案假设你的 Power Query 输出中没有嵌套的 JSON 对象或数组。如果存在嵌套结构,你需要更复杂的逻辑来处理双引号的添加。

希望这可以帮助你!

标签:python,json,excel,dictionary,powerquery
From: 78810389

相关文章

  • 使用python从网站自动下载pdf时出错
    我想从一个名为epadossier.nl的网站自动批量下载pdf我用谷歌搜索了这个并找到了一段代码并修复了一个小错误。所以现在我得到了这个`importrequestsurl="https://www.epadossier.nl/adres/plaats/straat/num"response=requests.get(url)ifresponse.status_cod......
  • 避免字符串连接的嵌套循环的 Pythonic 方法
    我想找到所有5位数字的字符串,其中前三位数字在我的第一个列表中,第二个槽第四个数字在我的第二个列表中,第三到第五个数字在我的最后一个列表中:l0=["123","567","451"]l1=["234","239","881"]l2=["348","551","399"......
  • Python 环境配置(二)安装jupyter、matplotlib、numpy库
    Python环境配置(二)安装jupyter、matplotlib、numpy库一、numpypipinstallnumpy二、matplotlibpipinstallmatplotlib三、jupyter1、anaconda自带Jupyter2、pycharm插件只有Pycharm的Professional版才支持JupyterNotebook,请注意版本3、新建文件#%......
  • 如何使用 PIPE 并行运行 python 子进程?
    我正在使用inkscape将一堆SVG图像转换为PNG。单线程:importsubprocessimporttimeimportosinkscape_path=r'C:\ProgramFiles\Inkscape\bin\inkscape.com'steps=30filenames=[]processes=[]#t_start=time.process_time()t_start=time.time()f......
  • 超级好用的JSON可视化工具
    理想的在线JSON工具,应该支持快速格式化、可压缩、快捷复制、可下载导出,对存在语法错误的地方能明确显示。提供搜索定位功能,可视区足够大,最好支持全屏。经过多方面对比,以下工具能满足这个需求: 工具地址直达:在线JSON可视化工具工具支持全屏模式操作,通过搜索框可以快速进行查找,双......
  • Python sqlite3 删除数据
    要从SQLite表中删除记录,你需要使用DELETEFROM语句。要删除特定的记录,你需要同时使用WHERE子句。要更新特定的记录,你需要同时使用WHERE子句。语法以下是SQLite中DELETE查询的语法- DELETEFROMtable_name[WHEREClause]PythonCopy例子假设我们使用以下查询创建了......
  • Python 环境配置(一)Python、Anaconda、Pycharm的安装
    Python环境配置(一)Python、Anaconda、Pycharm的安装本人之前已安装一次,此次为卸载之后的重新安装。。。一、Python1、下载下载官网:下载链接:DownloadPython|Python.org勾选添加到路径(环境变量)next如图所示之后点close关闭2、验证win+Rcmd:python退出ex......
  • Pycharm 设置 yaml 格式接口测试用例模板 (python+pytest+yaml)
    前言初次编写的伙伴们可能对yaml格式不太熟悉,自己写yaml用例的时候,总是格式对不齐啊记不住设定好的关键字啊等等等琐事是我们可以在pycharm上设置用例模块,通过快捷方式调用出对应的模块,达到高效写用例的目的。 pycharm操作集:1、File-Settings(快捷键Ctrl+Alt+S) 2、Live......
  • Python - Redirecting output of print to a file
    Theprintfunctioncanalsobeusedtowritetoafile.Theoutputofprint,thatisbydefault,senttothescreencanberedirectedtoanopenfile.Forthis,youhavetosupplythefileobjectasanargumentforthenamedparameterfile.Hereisanexa......
  • Python:添加到相对于当前运行脚本的 sys.path 的最佳方法
    我有一个充满脚本的目录(比如说project/bin)。我还有一个位于project/lib的库,并希望脚本自动加载它。这是我通常在每个脚本的顶部使用的:#!/usr/bin/pythonfromos.pathimportdirname,realpath,sep,pardirimportsyssys.path.append(dirname(realpath(_......