ast.literal_eval - 循环遍历列表中的字符串元素

时间:2017-12-22 08:31:28

标签: python django list tuples

目标:我想从map密钥中提取request.POST密钥中的longlat元组。

<QueryDict: {'map': ['(38.70053557156445, 149.81571853160858)', '(38.70060091643143, 149.8153966665268)'], 'csrfmiddlewaretoken': ###}>

问题:我使用ast.literal_eval来提取元组,但不知何故只返回第二个元组。

markers = request.POST
position = ast.literal_eval(markers['map'])

我也尝试使用map进行循环,但这会在元组括号上给出SyntaxError: unexpected EOF while parsing

for idx, val in enumerate(markers['map']):
 position = ast.literal_eval(markers['map'][idx])

最后,我尝试了list(map(ast.literal_eval, markers['map'])),但这会返回与上面相同的SyntaxError

1 个答案:

答案 0 :(得分:1)

查询字符串通常用于表示具有单个值的键和具有多个值的键,因此Django的QueryDict requires that you specify the type you’re looking for

position = list(map(ast.literal_eval, markers.getlist('map')))