PYTHON:有类似ast.literal_eval()的函数吗?

2023-11-30

我在使用 ast.literal_eval() 时遇到问题。在下面的示例中,我只想将字符串 (myText) 转换为字典。但 ast.literal_eval() 尝试评估<__main__.myClass instance at 0x0000000052D64D88>并给我一个错误。我完全理解这个错误,但我想知道是否有办法避免它(使用其他函数或使用其他方法来使用函数 ast.literal_eval)

import ast

myText = "{<__main__.myClass instance at 0x0000000052D64D88>: value}"
ast.literal_eval(myText)

# Error: invalid syntax
# Traceback (most recent call last):
#   File "<maya console>", line 4, in <module>
#   File "C:\Program Files\Autodesk\Maya2016\bin\python27.zip\ast.py", line 49, in literal_eval
#     node_or_string = parse(node_or_string, mode='eval')
#   File "C:\Program Files\Autodesk\Maya2016\bin\python27.zip\ast.py", line 37, in parse
#     return compile(source, filename, mode, PyCF_ONLY_AST)
#   File "<unknown>", line 1
#     {<__main__.myClass instance at 0x0000000052D64D88>: value}
#      ^
# SyntaxError: invalid syntax # 

预先感谢您的帮助 !


你真正想做的是使用转储你的数据pickle.dump并使用加载它pickle.load(或等效的,例如 json 等)。使用repr(data)转储数据会导致这样的问题。

如果您只需要挽救已经生成的数据,那么您might摆脱类似以下的事情:

def my_literal_eval(s):
    s = re.sub(r"<__main__.myClass instance at 0x([^>]+)>", r'"<\1>"', s)
    dct = ast.literal_eval(s)
    return {myClass(): v for v in dct.itervalues()}

使用示例:

>>> import ast, re
>>> class myClass(object): pass
... 
>>> myText = "{<__main__.myClass instance at 0x0000000052D64D88>: {'name': 'theName'}, <__main__.myClass instance at 0x0000000052D73F48>: {'name': 'theName'}}"
>>> my_literal_eval(myText)
{<__main__.myClass object at 0x7fbdc00a4b90>: {'name': 'theName'}, <__main__.myClass object at 0x7fbdc0035550>: {'name': 'theName'}}

这仅在以下情况下才有效myClass实例没有任何有用的信息,仅用于身份识别。这个想法是首先通过替换来修复字符串<__main__.myClass instance ...>带有可以解析的字符串ast.literal_eval,然后将其替换为实际的myClass实例 - 前提是这些实例可以在没有参数的情况下构造,这取决于上述假设。

如果这个最初的假设不成立,那么你的数据就是,正如伊格纳西奥put it,不可逆地损坏,并且任何巧妙的解析都无法找回丢失的位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PYTHON:有类似ast.literal_eval()的函数吗? 的相关文章

  • pywinauto 32位用户警告

    我正在尝试使用 pywinauto 在每次更新类文件时自动启动和停止 TomCat 但是 当我尝试运行它时 它会给出以下警告 UserWarning 32 bit application should be automated using
  • 我如何在 python 2.6 中测试抽象方法

    我有一个抽象类 import abc class Hello object metaclass abc ABCMeta abc abstractmethod def add self foo pass abc abstractmethod
  • 如何有效地从连续字符串中提取文字单词? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将没有空格的文本拆分为单词列表 https stackoverflow com questions 8870261 how to split text without spaces into li
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 如何忽略传递给函数的意外关键字参数?

    假设我有一些功能 f def f a None print a 现在 如果我有一本字典 比如dct a Foo 我可以打电话f dct 并得到结果Foo打印 但是 假设我有一本字典dct2 a Foo b Bar 如果我打电话f dct2
  • 如何为 Intellij/PyCharm 设置 PYTHONSTARTUP 脚本

    我尝试添加PYTHONSTARTUP环境变量 我还尝试了自定义启动脚本 但更令人惊讶的是 这also没有工作 npa别名无法识别 出于一点绝望 我什至尝试添加到interpreter options 那什么也没做 实际上是什么Interpr
  • Django 未在 404 页面上应用应用程序中的 CSS 文件

    姜戈3 0 8 Python 3 7 x 我有一个包含一些应用程序的 Django 项目 我正在尝试为 400 403 404 500 错误制作一些 默认 错误页面 我已经这样做了 并显示了适当的模板 但没有任何样式或 JS 在 404 错
  • OpenCV - 我需要将彩色图像插入黑白图像并且

    我用以下代码将黑白图像插入彩色图像 没问题 face grey cv cvtColor face cv COLOR RGB2GRAY for row in range 0 face grey shape 0 for column in ra
  • Seaborn 热图中的自定义调色板间隔

    我正在尝试绘制一个heatmap https seaborn pydata org generated seaborn heatmap html使用seaborn库 绘图函数如下所示 def plot confusion matrix da
  • 了解 asyncio 已经运行的永久循环和挂起的任务

    我在理解如何将新任务挂起到已经运行的事件循环中时遇到问题 这段代码 import asyncio import logging asyncio coroutine def blocking cmd while True logging in
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 类型错误:需要 Future 或协程

    我尝试在 asyncssh 上自动重新连接 ssh 客户端 SshConnectManager 必须留在后台并在需要时进行 ssh 会话 class SshConnectManager object def init self host u
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • 检查多个 pd.DataFrame 是否相等

    是否有一种 Pythonic 方式 无循环或递归 来检查是否超过两个pd DataFrames 例如 pd DataFrames 列表 彼此相等吗 就像是 all x equals dfs 0 for x in dfs with dfs数据
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • Pip 突然使用了错误版本的 Python

    在 os x 上使用 pip 时遇到一个奇怪的问题 据我所知 快速查看我的 bash history 似乎可以确认 我最近没有对我的配置进行任何更改 唉 pip 命令似乎突然使用了与以前不同的 python 版本 到目前为止 我使用命令 p
  • 在多个图表上绘制一条线

    I don t know how this thing is called or even how to describe it so the title may be a little bit misleading The first a
  • 在Python中从CSV文件中获取随机行并找到相应的单词,就像测验一样

    抱歉标题含糊不清 想不出更好的表达方式 我有一个包含德语 英语单词的 CSV 文件 如下所示 Ja Yes Nein No Katze Cat 我希望我的 python 脚本从 CSV 文件中打印一个随机的德语单词 并要求他们输入英语单词

随机推荐

  • Delphi 使用可变参数列表调用 JNI 方法

    使用 Embarcadero 的 Jni api 单元 如何向需要它的 JNI 方法提供变量参数列表 例如 JNINativeInterface 的 CallStaticObjectMethodV 方法 清单 1 有一个 va list 类
  • 通过修改插件调用JEdtiable提交按钮

    解决方案 1 不使用 TinyMCE 如果您没有将 TinyMCE 与 JEditable 一起使用 请查看下面 Arman P 的帖子 解决方案 2 使用 TinyMCE 如果您使用 TinyMCE 那么不幸的是 Arman P s 方法
  • 获取自定义适配器中的项目列表

    那么 我有一个扩展 ArrayAdapter 的自定义适配器 我想从适配器内获取整个列表 可以这样做吗 我知道在 ArrayAdapter 构造函数中 您传入对象列表并将其存储为 mObjects 但该列表是私有的 我想在构造函数中的自定义
  • Python 2.7 中具有多个函数参数的多重处理

    我正在尝试实现多处理来加速复制循环 但无法让它在 Python27 中工作 这是我的程序的一个非常简化的版本 基于 SO 的文档和其他答案 例如用于多个参数的 Python multiprocessing pool map 我意识到关于多处
  • 使用 JQuery 获取图像的真实尺寸

    给定图像路径列表 如何迭代它们并找到实际的图像尺寸 我假设我必须将它们插入没有宽度或高度属性的 DOM 中 并对它们执行 width 和 height var paths path image png somewhere page jpg
  • 内存映射文件 java NIO

    我了解如何创建内存映射文件 但我的问题是在下面一行中说 FileChannel roChannel new RandomAccessFile file r getChannel ByteBuffer roBuf roChannel map
  • include_next 预处理器指令导致 MSVC 中出现问题

    我知道 inlcude next 恰好是 C 预处理器的 GNU 扩展 我在使用 MSVC 编译 Gnu 库代码时遇到问题 例如 有一个 stdio h 头文件或者更确切地说GNU like
  • Java / NetBeans - 如何进入 jar 文件?

    我在 Netbeans 中有一个 Java 项目 其属性的库部分列出了几个 jar 文件 我在其中一个 jar 文件中发现了一个错误 我想在调试时介入它 这是我到目前为止所做的 我已经找到了源代码 jar 文件 我将该源代码作为一个项目打开
  • 本地运行SAM时如何连接RDS实例?

    我正在使用 SAM 无服务器应用程序模型 在本地测试连接到云中的 Aurora RDS 实例的 Lambda 函数 使用以下命令 sam local invoke lambda function name event event json
  • 如何使用webp图片并支持safari

    由于压缩效果更好 我尝试在整个网站中使用 webp 图像 不过我知道 safari 不支持 webp 图像是使用加载的background image url img img webp 然后我应用其他background特性 我明白了
  • 在c中使用逗号运算符

    我读过逗号运算符用于分配表达式 并将正确的表达式提供给左值 但是为什么这个程序在不使用括号的情况下将左表达式分配给左值呢 我正在使用 Turbo C 编译器 int b 2 int a a b 2 b 5 prints 10 as expe
  • lua代码反混淆

    我最近下载了一些 lua 代码 我发现里面有一些混淆的字符串 这让我想知道那里使用了什么样的混淆技术 有人有想法吗 local code 27 76 117 97 81 0 1 4 4 4 8 0 64 0 0 0 64 67 58 92
  • Swift macOS 弹出窗口检测更改暗模式

    从图像中可以看出 我有一个弹出窗口 我必须确保当屏幕模式发生变化 深色模式或浅色模式 时 弹出窗口的颜色会发生变化 颜色取自资源 如下所示 NSColor named backgroundTheme withAlphaComponent 1
  • 在 Project Reactor 中处理数据的最佳方法

    在项目反应器中处理数据的最佳方法是什么 使用平面地图 public Mono
  • 旋转 MKMapView 的内容

    我需要根据罗盘值旋转mapView的内容 float myHeadingValue newHeading trueHeading 为了旋转地图 我使用这个 mapView setTransform CGAffineTransformMake
  • 删除任务栏上的 Google Chrome 固定图标

    我想删除任务栏上的 Google Chrome 固定图标 卸载不会删除图标 我修改了代码以仅删除 Google Chrome lnk 我想要做的 了解 VBS 是循环遍历所有用户文件夹 而不仅仅是当前用户 我认为当前用户定义为strCurr
  • 使用其他类的类字段

    我对 C 和 OOP 还很陌生 所以请耐心等待 我有两个具有不同命名空间的类 namespace Class1 public class class1 public double x public double y namespace Cl
  • Scala 泛型:如何声明类型必须是案例类?

    我有几个案例类count场地 默认情况下为 1 我在代码中进行了归约 对重复项进行分组并对值求和以查找每个对象的数量 例如 case class Person name String count 1 personList groupBy n
  • 为什么 objdump 显示该汇编语言指令的操作码为空?

    我有以下汇编代码 global start section text start add byte eax al 编译和链接后 我尝试查看操作码 objdump d eax o eax o file format elf32 i386 Di
  • PYTHON:有类似ast.literal_eval()的函数吗?

    我在使用 ast literal eval 时遇到问题 在下面的示例中 我只想将字符串 myText 转换为字典 但 ast literal eval 尝试评估 lt main myClass instance at 0x000000005