понимание ast.literal_eval в коде - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь следовать этой документации для репликации того же региона .

У меня есть эта строка в коде, поэтому я просто пытаюсь понять, что это значит?

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 Ответ

1 голос
/ 02 июля 2019

ast.literal_eval преобразует тип значения в тип, основанный на его формате. Приведенный ниже код преобразует строку в список в зависимости от ее формата.

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

Если вы проверите тип string_a и list_a, вы увидите, что тип string_a будет строковым, а тип list_a будет списком.

Также функция 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'
...