首页 > 解决方案 > 将字符串列表转换为 python 列表并获取值

问题描述

我对 AWS 很陌生。我有两个 lambda,第一个查询 RDS 并收到类似 [('asdzxc', '12345-0', 123), ('asdzxc', '67890-0', 456)]的结果,然后第二个调用第一个并接受查询。问题是查询是作为字符串接收的: "[('asdzxc', '12345-0', 123), ('asdzxc', '67890-0', 456)]"。我需要迭代并获取值以在另一个输出中使用它们。但是当我迭代时,它每行显示一个字符。我一直在阅读一些文档并尝试使用json.loads(), list(), tuple(), ast.literal_eval. 但我还是一样。

这是第一个 lambda 的片段:

query = select_from_bcuc(rut_crypto)
print(query)
str_data = json.dumps(str(query))
return {
        'statusCode': 200,
        'request_id': request_id,
        'body': str_data,
        'msg': 'Hello from extractData!!!'
    }

> output: [('asdzxc', '12345-0', 123), ('asdzxc', '67890-0', 456)]

第二个 lambda:

obj = extractData(rut)
    if obj:
        print('Getting data.')
        print(obj['body'])
        p = json.loads(obj['body'])
        print(p)

> output: "[('asdzxc', '12345-0', 123), ('asdzxc', '67890-0', 456)]"

标签: pythonamazon-web-serviceslist

解决方案


您可以使用literal_eval

import ast
s="[('asdzxc', '12345-0', 123), ('asdzxc', '67890-0', 456)]"
a_list = ast.literal_eval(s)
print(type(a_list), a_list)

给出:

<class 'list'> [('asdzxc', '12345-0', 123), ('asdzxc', '67890-0', 456)]

推荐阅读