当前位置: 首页 > news >正文

import ast与import json的区别

import ast与import json的区别

  • ast.literal_eval()
    • 特点
    • 正确示例
    • 错误示例
  • json.loads()
    • 特点
    • 正确示例
    • 错误示例
  • 我觉得可以设置一下兼容
  • 顺便写一下,linux中的查找文件

ast.literal_eval()

特点

  • 解析 Python 字面量表达式,如:
    • 基本类型:int、float、str
    • 数据结构:list、tuple、dict、set
    • 特殊值:None、True、False
  • 不能解析 JSON 专有的 null
  • 不能解析非字面量的 Python 代码

正确示例

import ast

s = "{'key': 123, 'value': [1, 2, 3], 'flag': True}"  # Python 字典格式的字符串
result = ast.literal_eval(s)
print(result)  
# 输出: {'key': 123, 'value': [1, 2, 3], 'flag': True} 

错误示例

s = '{"key": null}'  # JSON 格式
result = ast.literal_eval(s)  
# ❌ SyntaxError: invalid syntax,因为 `null` 不是 Python 关键字

json.loads()

特点

  • 解析 JSON 格式 的字符串(JSON 是 JavaScript 语法)
    • 支持 null(转换为 Python 的 None)
    • 只能解析 JSON 兼容的类型:
    • 基本类型:int、float、str
    • 数据结构:list、dict
    • 特殊值:null → None,true → True,false → False
  • 不能解析 Python 专有的格式(比如 set()、tuple())

正确示例

import json

s = '{"key": 123, "value": [1, 2, 3], "flag": true, "data": null}'  # JSON 格式
result = json.loads(s)
print(result)  
# 输出: {'key': 123, 'value': [1, 2, 3], 'flag': True, 'data': None}  ✅

错误示例

s = "{'key': 123}"  # Python 字典格式
result = json.loads(s)  
# ❌ json.JSONDecodeError: Expecting property name enclosed in double quotes

我觉得可以设置一下兼容

当然这是前后端在没有交接的情况下,我们不知道对方传来的格式,我们可以都试一下

也就是说我们先尝试使用ast.literal_eval进行解析,如果解析失败,就再尝试使用json.loads进行解析即可.

import ast
import json

try:
    parameters = ast.literal_eval(参数parameter)
    print(参数parameters)
except (SyntaxError, ValueError) as e:
    print(f"解析失败: {e}")
    print(f"[类型]Type of 参数parameter: {type(参数parameter)}") # [类型]Type of 参数parameter: <class 'str'>
    print(f"[值]Value of 参数parameter: {repr(参数parameter)}") # [值]Value of 参数parameter: '{"pod5File": null, "Workflow": null, "filter": null}'
    parameters = json.loads(参数parameter)
    print(f"解析成功: {parameters}")

顺便写一下,linux中的查找文件

  • 全局查找
    find / -name “xxx.py”
  • 当前文件夹下查找
    find ./ -name “xxx.py”

相关文章:

  • 电机控制常见面试问题(十二)
  • Wiform基础知识21-40
  • wepy微信小程序自定义底部弹出框功能,显示与隐藏效果(淡入淡出,滑入滑出)
  • 【sql靶场】第11、12关-post提交注入
  • 《突破GitHub网路访问困境:揭秘与应对》
  • 基于大模型的上睑下垂手术全流程预测与方案优化研究报告
  • K8S学习之基础三十:k8s的资源访问方式
  • 博通免费版(winlinux) VMware Workstation Pro 17 安装包分享
  • ORACLE 19.8版本遭遇ORA-600 [kqrHashTableRemove: X lock].宕机的问题分析
  • [C语言笔记]08、函数
  • 云服务器新手配置内网穿透服务(frp)
  • Java 方法引用(Method Reference)从入门到精通
  • 工作记录 2017-01-12
  • vue3 + css 列表无限循环滚动+鼠标移入停止滚动+移出继续滚动
  • 开源:LMDB 操作工具:lmcmd
  • 【万字总结】构建现代Web应用的全方位性能优化体系学习指南(一)
  • 基于Hadoop的城市道路交通数据的可视化分析-Flask
  • SAP ABAP BDC 录屏开发
  • spring boot实现程序运行过程中数据源动态切换
  • STM32配套程序接线图
  • 十大免费自助建站/seo对网络推广的作用是什么?
  • 宝安网站建设公司/平台推广引流怎么做
  • 网站佣金怎么做会计分录/做网站找哪家好
  • 企业网站设计制作教程/免费正规大数据查询平台
  • 公司做网站的优点/变现流量推广app
  • 呼和浩特制作网站/best网络推广平台