相关疑难解决方法(0)

将Dictionary的String表示形式转换为字典?

如何将a的str表示形式(dict如下面的字符串)转换为dict

s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
Run Code Online (Sandbox Code Playgroud)

我不喜欢用eval.我还能用什么?

这样做的主要原因是我写的一个同事课程,将所有输入转换为字符串.我没心情去修改他的课程来处理这个问题.

python string dictionary

719
推荐指数
10
解决办法
75万
查看次数

用于列表反序列化的Python'eval'的安全性

在这种情况下是否存在任何可能发生的安全漏洞:

eval(repr(unsanitized_user_input), {"__builtins__": None}, {"True":True, "False":False})
Run Code Online (Sandbox Code Playgroud)

unsanitized_user_inputstr对象在哪里.字符串是用户生成的,可能很讨厌.假设我们的Web框架没有让我们失望,那么它就是来自Python内置的一个真正的诚实的str实例.

如果这很危险,我们可以对输入做任何事情以使其安全吗?

我们当然希望执行字符串中包含的任何东西.

也可以看看:

(我相信)对这个问题不重要的更大背景是我们有成千上万的这些:

repr([unsanitized_user_input_1,
      unsanitized_user_input_2,
      unsanitized_user_input_3,
      unsanitized_user_input_4,
      ...])
Run Code Online (Sandbox Code Playgroud)

在某些情况下嵌套:

repr([[unsanitized_user_input_1,
       unsanitized_user_input_2],
      [unsanitized_user_input_3,
       unsanitized_user_input_4],
       ...])
Run Code Online (Sandbox Code Playgroud)

它们本身转换为字符串repr(),放入持久存储,最后用eval读回内存.

Eval从持久存储中反序列化字符串比pickle和simplejson快得多.解释器是Python 2.5所以json和ast不可用.不允许使用C模块,不允许使用cPickle.

python eval

6
推荐指数
3
解决办法
3100
查看次数

如何从字符串中提取字典?

我有一个字符串,它就像:

"{'a': 1, 'b': 2, 'c': 3}"
Run Code Online (Sandbox Code Playgroud)

我想为这个字符串赋一个变量,并使变量成为一个字典.这听起来很容易,但我花了半个小时并没有想出来.怎么做?

python

1
推荐指数
1
解决办法
117
查看次数

标签 统计

python ×3

dictionary ×1

eval ×1

string ×1