Convertir réponse de chaîne en JSON ou liste

notpepsi:

Mon apparence de réponse comme:

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

J'ai donc essayé avec de convertir cette chaîne avec le list(response)mais ne pas obtenu le résultat que je voulais. Y a-t- il des solutions plus simples pour convertir cette réponse dans une liste ou même JSON?

Mon résultat attendu est une liste comme ceci : [ "a", "bb", "c12", "dddd", "et", "ainsi de suite"]

Matteo Ragni:

Si votre chaîne ne contient que des littéraux de base ( par exemple des chaînes, octets, numéros, tuples, listes, dicts, ensembles, booléens, et None), vous pouvez utiliser le astmodule pour analyser la chaîne ( 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']]

De la documentation:

Ceci peut être utilisé pour évaluer en toute sécurité des chaînes contenant des valeurs Python provenant de sources non fiables, sans la nécessité d'analyser les valeurs soi-même. Il n'est pas capable d'évaluer les expressions arbitrairement complexes, impliquant par exemple les opérateurs ou l'indexation.

Mais vous devriez également remarquer que:

Il est possible de planter l'interpréteur Python avec une chaîne suffisamment grand / complexe en raison des limites de profondeur de la pile dans le compilateur AST Python.

Si vous avez besoin aussi plat la liste de résultats , vous pouvez suivre la réponse Comment faire une liste à plat de la liste des listes?

Une approche qui me plaît de ce poste est quelque chose comme:

import functools
import operators

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

Avec les informations que vous nous avez donné , il est difficile de convertir cette chaîne dans une représentation JSON, mais on peut essayer considérer que vous avez une liste de liste de deux éléments. Si l' on considère les deux éléments dans la liste intérieure comme (clé, valeur) par rapport, il est possible de créer un dictionnaire compatible JSON ainsi:

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"}'

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=298917&siteId=1
conseillé
Classement