了解代码中的ast.literal_eval

时间:2019-07-02 03:24:11

标签: python-2.7 abstract-syntax-tree

我正在尝试关注this documentation for same region replication

我在代码中有这一行,所以只是想了解它的含义?

sns_message = ast.literal_eval(event['Records'][0]['Sns']['Message'])

ast.literal_eval在这里做什么?

key = str(urllib.unquote_plus(sns_message['Records'][0]['s3']['object']['key']).decode('utf8'))

要在此处了解为什么使用urllib.unquote_plus?

1 个答案:

答案 0 :(得分:1)

ast.literal_eval根据值的格式将值类型转换为值类型。以下代码将根据字符串的格式将字符串转换为列表。

string_a = "['test', 'example']"
list_a = ast.literal_eval(string_a)

如果检查string_a和list_a的类型,可以看到string_a的类型为字符串,而list_a的类型为list。

此外,函数urllib.unquote_plus将删除url中的“ +”号,并将其替换为空格。

>>> s = 'http://stackoverflow.com/questions/?q1=xx+xx+xx'
>>> urllib.unquote_plus(s)
'http://stackoverflow.com/questions/?q1=xx xx xx'