respuesta convertir en cadena JSON o lista

notpepsi:

Mi aspecto respuesta como:

"[["a","bb"],["c12","dddd"],["and","so on"]]"

Así que he intentado con convertir esta cadena con el list(response)pero no consiguió el resultado que quería. ¿Hay soluciones más simples para convertir esta respuesta en una lista o incluso JSON?

Mi resultado esperado es una lista como esta : [ "a", "BB", "C12", "dddd", "y", "etc."]

Matteo Ragni:

Si la cadena contiene sólo literales básicos (es decir, cadenas, octetos, números, tuplas, listas, predice, conjuntos, booleanos, y None), se puede utilizar el astmódulo para analizar la cadena ( ast.literal_eval):

import ast

in_str = """[["a","bb"],["c12","dddd"],["and","so on"]]"""
res_list = ast.literal_eval(in_str)

print(res_list)
# [['a','bb'],['c12','dddd'],['and','so on']]

A partir de la documentación:

Esto se puede utilizar para evaluar de forma segura cadenas que contienen los valores de Python de fuentes no fiables sin la necesidad de analizar los valores de uno mismo. No es capaz de evaluar expresiones arbitrariamente complejas, por ejemplo, la participación de los operadores o indexación.

Sin embargo, también se observa que:

Es posible bloquear el intérprete de Python con una cadena suficientemente grande / complejo debido a las limitaciones de profundidad de la pila en AST compilador de Python.

Si también necesita a plana la lista resultante puede seguir la respuesta ¿Cómo hacer una lista plana de lista de listas?

Un enfoque que me gusta de ese cargo es algo así como:

import functools
import operators

flat_list = functools.reduce(operator.iconcat, res_list, [])
print(flat_list)
# ['a', 'bb', 'c12', 'dddd', 'and', 'so on'] 

Con la información que nos dio es difícil convertir esa cadena en una representación JSON, pero uno puede tratar teniendo en cuenta que usted tiene una lista de lista de dos elementos. Si tenemos en cuenta los dos elementos de la lista interna como (clave, valor) relación, es posible crear un diccionario compatible con JSON de esta manera:

json_dict = dict(res_list)
print(json_dict)
# {'a': 'bb', 'c12': 'dddd', 'and': 'so on'}

import json
json.dumps(json_dict)
# '{"a": "bb", "c12": "dddd", "and": "so on"}'

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=298920&siteId=1
Recomendado
Clasificación