Convertir une chaîne de caractère en liste

kouamecorneille -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Je travaille sur une application utilisant les données satellitaires. Lorsque je calcule l'indice NDVI pour une zone bien définie, j'arrive à enregistrer les données dans la base de données sous forme de liste.

Le problème se situe au niveau de la récupération des données. Les données sont récupérées sous forme de chaîne de caractères. d'où l'impossibilité de les manipuler.

Exemple : 

'[[-0.015264353245655733, -0.02012578616352201, -0.02215860899067006, -0.014277311373723331], [-0.017655479560998888, -0.021296684851028116, -0.02274901668969916, -0.015384615384615385]]'

J'ai besoin d'aide.

Merci d'avance.

A voir également:

4 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

Ce que tu montres ressemble à une liste de listes.

Peut-être pourrais-tu montrer ce que tu veux obtenir, et expliquer ce que tu appelles "manipuler"?

0
kouamecorneille
 

Je veux obtenir une liste qui va regrouper tout les valeurs, pour ensuite parcourir la liste avec une boucle for.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Peux-tu montrer le code que tu as essayé, et le résultat obtenu?

0
couvor
 

Bonsoir, on peut évaluer ta chaîne.

import ast

s = '[[-0.015264353245655733, -0.02012578616352201, -0.02215860899067006, -0.014277311373723331], [-0.017655479560998888, -0.021296684851028116, -0.02274901668969916, -0.015384615384615385]]'

data = ast.literal_eval(s)

Maintenant vu que tu utilises une base de données, à ta place, je reverrais la façon dont tu enregistres tes données, et par conséquent la structure de tes tables, car tes valeurs décimales devraient être enregistrées dans ce même type dans ta bdd, ainsi il y aurait nul besoin d'évaluer des strings.

0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 

Bonjour,

La question initiale en soulève beaucoup d'autres (et c'est en substance ce que dit déjà couvor #4) :

  • Quelle est la nature de la base de données ? Est-ce du SQL ? Est-ce imposé ?
    • En effet, SQL n'est pas idéal quand on veut associer à une clé un tableau. Il faut stocker ledit tableau sous forme de chaîne, ce qui a deux inconvénients majeurs
      • On ne peut pas faire une requête efficace portant sur les valeurs stockées dans ce tableau
      • Quand on interroge cette colonne, on récupère une chaîne et on est obligé d'utiliser a posteriori des fonctions comme ast.literal_eval, comme le propose couvor #4.
        import ast
        
        s = "[1.0, 2.0, 3.0]"
        l = ast.literal_eval(s)
        print(l)  # Affiche [1.0, 2.0, 3.0]
    • Est-ce qu'un autre stockage, genre un fichier pickle ou une base no SQL (type mongoDB) est envisageable ?
  • Ces valeurs numériques sont-elles regroupées dans ton stockage ?
    • Si oui, pour quelle(s) raison(s) ? Car apparemment, un indice NDVI est une valeur entre -1 et 1 et j'ai un peu de mal à voir pourquoi tu te retrouves avec des listes de listes.
    • Sinon, est-ce lié à la manière dont tu interroges ton stockage ? Comme le demande yg_be #1 #3, peux-tu nous montrer comment tu procèdes (code python + requête) et nous expliquer ce que tu veux faire ?

Bonne chance

0