ast.literal_eval - 循环遍历列表中的字符串元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ast.literal_eval - 循环遍历列表中的字符串元素相关的知识,希望对你有一定的参考价值。
目标:我想从下面的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
。
答案
查询字符串通常用于表示具有单个值的键和具有多个值的键,因此Django的QueryDict
requires that you specify the type you’re looking for:
position = list(map(ast.literal_eval, markers.getlist('map')))
以上是关于ast.literal_eval - 循环遍历列表中的字符串元素的主要内容,如果未能解决你的问题,请参考以下文章
为啥 json.loads 比 ast.literal_eval 更适合解析 JSON?
Python 3,ast.literal_eval(node_or_string) 中是不是有任何已知的安全漏洞?