Partage
  • Partager sur Facebook
  • Partager sur Twitter

texte en objet numpy

fonction conversion texte en objet

Sujet résolu
24 mars 2022 à 20:50:28

Bonjour, bonsoir la communauté,

j'aurais besoin d'un peu d'aide.

j'ai ce script qui permet de transformer une string en objet.

exemple: 

a = "for i in range(1,11)" 

en appliquant str_to_obj(a)

ça redeviendra des objet, et non plus une string.

je souhaite ajouter dans la fonction, la possibilité que le packgage numpy soit aussi reconnu comme étant un packgage, car

actuellement, j'ai une erreur si je passe une string avec, par exemple a = "np.unique()", la fonction de conversion me dit que Numpy n'est pas reconnu comme un package.

je l'ai pourtant bien importé  via import numpy as np

Je vous reemercie pour votre aide.

voici le code de ma fonction de conversion:

import sys
def str_to_obj(astr):
    print('processing %s'%astr)
    try:
        return globals()[astr]
    except KeyError:
        try:
            __import__(astr)
            mod=sys.modules[astr]
        except ImportError:
            module,_,basename=astr.rpartition(' ')
            if module:
                mod=str_to_obj(module)
                return getattr(mod,basename)
            else:
                raise
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2022 à 11:09:52

Bonjour,

C'est quoi l'intérêt de faire cela ? Imaginons un autre langage où l'introspection est impossible, comment faîtes vous ?

Que vaudrait par exemple astr ? Et quel résultat attendez-vous ?

Pourquoi passer une variable de type string pour exécuter une fonction de numpy (a = "np.unique()")?

-
Edité par fred1599 26 mars 2022 à 11:10:07

  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

26 mars 2022 à 19:08:57

bonjour Fred,

j'avais besoin de récupérer la commande python et non la valeur associé pour ensuite l'intégrer une commande de type 

lst =[]
for i in range (0,10):
        lst.append(<commande python non executé précédemment et récupéré>[i])
df.loc[lst[0] & lst[1] & ... & lst[i]]
  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2022 à 9:33:22

moimeme10 a écrit:

bonjour Fred,

j'avais besoin de récupérer la commande python et non la valeur associé pour ensuite l'intégrer une commande de type 

lst =[]
for i in range (0,10):
        lst.append(<commande python non executé précédemment et récupéré>[i])
df.loc[lst[0] & lst[1] & ... & lst[i]]

Ma question est plus lié au pourquoi récupérer une commande Python ? La partie conception, et non syntaxique...
  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

27 mars 2022 à 14:30:30

je voulais récup la commande en elle-même pour ensuite l'inclure dans une autre commande .

je sais pas si je suis très clair.

Dans tous les cas, j'ai trouvé la solution en convertissant en byte et reconvertissant en commande.

  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2022 à 15:54:13

Ce qui est clair c'est qu'il y a un problème de conception... si la solution est d'utiliser une fonction comme eval, alors tu vas avoir un problème quand une personne écrira une commande du genre rm -rf / par exemple.
  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)