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) 中是不是有任何已知的安全漏洞?

ValueError:添加 Keras 层时带有 ast.literal_eval() 的节点或字符串格式错误

eval与ast.literal_eval

如何将字符串转换为字典或列表?

确定跨行的唯一字典键