相关疑难解决方法(0)

使用python的eval()与ast.literal_eval()?

我有一些代码的情况,eval()作为一种可能的解决方案.现在我从来没有使用eval()过,但是,我已经发现了很多关于它可能造成的潜在危险的信息.也就是说,我对使用它非常谨慎.

我的情况是我有一个用户给出的输入:

datamap = raw_input('Provide some data here: ')
Run Code Online (Sandbox Code Playgroud)

哪里datamap需要是字典.我四处搜索,发现eval()可以解决这个问题.我认为在尝试使用数据之前我可以检查输入的类型,这将是一个可行的安全预防措施.

datamap = eval(raw_input('Provide some data here: ')
if not isinstance(datamap, dict):
    return
Run Code Online (Sandbox Code Playgroud)

我仔细阅读了文档,但我仍然不清楚这是否安全.eval在输入或datamap调用变量后立即评估数据吗?

ast模块是.literal_eval()唯一安全的选择吗?

python eval abstract-syntax-tree

154
推荐指数
6
解决办法
14万
查看次数

在Python中处理字符串中的转义序列

有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与Python处理字符串文字中的转义序列相同的方式处理转义序列.

例如,假设myString定义为:

>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
Run Code Online (Sandbox Code Playgroud)

我想要一个函数(我会称之为process)这样做:

>>> print(process(myString))
spam
eggs
Run Code Online (Sandbox Code Playgroud)

重要的是该函数可以处理Python中的所有转义序列(在上面链接的表中列出).

Python有功能吗?

python string escaping

93
推荐指数
4
解决办法
8万
查看次数

如何在Python中转换转义字符?

我想将包含转义字符的字符串转换为它们的正常形式,就像Python的词法解析器一样:

>>> escaped_str = 'One \\\'example\\\''
>>> print(escaped_str)
One \'Example\'
>>> normal_str = normalize_str(escaped_str)
>>> print(normal_str)
One 'Example'
Run Code Online (Sandbox Code Playgroud)

当然,无聊的方法是逐个替换所有已知的转义字符:http: //docs.python.org/reference/lexical_analysis.html#string-literals

您将如何normalize_str()在上面的代码中实现?

python string-formatting

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

用真实的\ n输出替换其中带有\ n的文本

我正在尝试从杜松路由器获取配置,但是我遇到以下问题:

设置后

stdin, stdout, stderr = client1.exec_command('show configuration interfaces %s' % SID)
 CONFIG = stdout.read()
 print CONFIG
Run Code Online (Sandbox Code Playgroud)

它带给我像这样的东西

'description El_otro_Puerto_de_la_Routing-instance;\nvlan-id 309;\nfamily inet {\n    mtu 1600;\n    address 10.100.10.10/24;\n}\n'
Run Code Online (Sandbox Code Playgroud)

问题是我想以这种格式接收该信息:

'description El_otro_Puerto_de_la_Routing-instance;
 nvlan-id 309;
 nfamily inet {
  mtu 1600;
  address 10.100.10.10/24;
 }
Run Code Online (Sandbox Code Playgroud)

因此,我希望\ n实际上是换行符,而不仅仅是显示“ \ n”字符串。

python blank-line juniper

4
推荐指数
2
解决办法
8214
查看次数