当前位置: 首页 > 面试题库 >

在不使用Eval的情况下将字符串转换为Python中的列表?

韩彬
2023-03-14
问题内容

我有一个字符串,是这样的:"[['Cheese', 72], ['Milk', 45], ['Bread', 22]]"

我想将其转换为列表。我知道我可以使用eval(string)来获取列表,但是eval令我感到恐惧,因为它可能会造成灾难(并且因为我可以获取非列表作为有效输出)。还有另一种更安全的方式将此字符串转换为列表吗?我知道这是一个列表,所有不是列表的数据都是无效数据(应该检查和/或抛出错误)。


问题答案:

如果您坚持要这样做,可以使用ast.literal_eval函数

>>> import ast
>>> foo = "[['Cheese', 72], ['Milk', 45], ['Bread', 22]]"
>>> ast.literal_eval(foo)
[['Cheese', 72], ['Milk', 45], ['Bread', 22]]

我确信其他人会告诉您您做错了什么,或者使用像JSON这样的库来传输像这样的任意数据结构,我不会不同意。



 类似资料:
  • 问题内容: 在处理未知字符串时,使用eval()似乎很危险,这是我项目的一部分。 对于我的项目,我有一个字符串,称为: 我尝试执行以下操作以直接转换该字符串(不使用eval): 显然,这是行不通的,所以不要这样做: 还有另一种方法可以获取输出b’a’吗? 问题答案: 是的,用它是安全的,因为它只计算 文字 。

  • 问题内容: 我有一个android客户端,可通过REST风格的端点和JSON与服务器进行通信。因此,我需要先检索完整的服务器响应,然后再将其转换为哈希。我有以下代码可以做到这一点(可以在某个地方的互联网上找到): 该代码在大多数情况下有效,但是我在行中看到OutOfMemory异常的客户端发生崩溃的报告: 完整的堆栈跟踪为: 我的问题:除了从服务器发送较小的数据块外,还有什么方法可以解决此问题?

  • 问题内容: 我需要在检查的同时将以下更改为- ,以改善圈复杂度。 但是我不确定我将获得什么价值。 问题答案: Java(版本7之前的版本)在switch / case中不支持String。但是您可以通过使用枚举来达到预期的结果。

  • 问题内容: 我有一个列表格式,如下所示: 如何转换为包含如下所示元素的列表: 问题答案: 用途: 或使用将其视为JSON : 以Python文字作为输入(因此Python源代码中的文本将为您提供一个值),以JSON输入。 演示: 只有当您的输入字符串中包含多个整数列表时,两者之间的区别才会发挥作用。JSON字符串包含unicode,在Python 2上无法正确解释,并且JSON类型只是支持的一部分

  • 我必须写一个方法,它有一个Integer类型的参数,并且必须返回一个Character类型的对象。如果给定参数的值可以表示为字符对象,则将其作为字符返回。否则返回null。 我的任务制定得很糟糕,它说:“不安全的转换(例如从int到char)在你的代码中是不允许的”,我想这不是不安全的,但也不允许? 到目前为止我的代码: 我试图通过任何方式修复它,但就是无法提出不使用不安全转换的解决方案,非常感谢

  • 我的任务是创建一个方法,该方法将接受用户输入的3位数int,并输出其反方向(123-321)。我不允许将int转换为字符串,否则我将失去分数,我也不允许打印main以外的任何地方。