IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Parser un texte avec mots clefs


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Parser un texte avec mots clefs
    Bonjour

    Je débute et souhaite parser un texte de type :

    {"spatialReference":{"wkid":4326},"candidates":[{"address":"Paris, ile de france
    75110 Paris, FRA","location":{"x":3.6858501,"y":47.9234886},"score":81,"a
    ttributes":{"MatchLevel":"city","Score":81,"North_Lat":"45.9328003","South_Lat":
    "45.9109001","West_Lon":"6.6802702","East_Lon":"6.73383"}}]}


    et recuperer les infos ds des variables :
    SpatialReference = {"wkid":4326}
    location = {"x":3.6858501,"y":47.9234886}
    score = 81
    MatchLevel = "city"
    ...etc

    ou tout autre valeur sur base des mots clefs à définir

    Quelle serait la solution?
    Je vous remercie

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pourquoi parser ? C'est des listes et dico (du moins si le formatage du texte est fixe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    >>> r = {"spatialReference":{"wkid":4326},"candidates":[{"address":"Paris, ile de france75110 Paris, FRA","location":{"x":3.6858501,"y":47.9234886},"score":81,"attributes":{"MatchLevel":"city","Score":81,"North_Lat":"45.9328003","South_Lat":"45.9109001","West_Lon":"6.6802702","East_Lon":"6.73383"}}]}
    >>> print type(r)
    <type 'dict'>
    >>> for e in r:
    ...     print e
    ... 
    candidates
    spatialReference
    >>> r['candidates']
    [{'attributes': {'South_Lat': '45.9109001', 'North_Lat': '45.9328003', 'MatchLevel': 'city', 'West_Lon': '6.6802702', 'Score': 81, 'East_Lon': '6.73383'}, 'score': 81, 'location': {'y': 47.923488599999999, 'x': 3.6858501000000001}, 'address': 'Paris, ile de france75110 Paris, FRA'}]
    >>> r['spatialReference']
    {'wkid': 4326}
    >>> r['candidates'][0]
    {'attributes': {'South_Lat': '45.9109001', 'North_Lat': '45.9328003', 'MatchLevel': 'city', 'West_Lon': '6.6802702', 'Score': 81, 'East_Lon': '6.73383'}, 'score': 81, 'location': {'y': 47.923488599999999, 'x': 3.6858501000000001}, 'address': 'Paris, ile de france75110 Paris, FRA'}
    >>> r['candidates'][0]['location']
    {'y': 47.923488599999999, 'x': 3.6858501000000001}
    >>> r['candidates'][0]['location']['y']
    47.923488599999999
    >>> r['candidates'][0]['score']
    81
    >>> r['candidates'][0]['location']
    {'y': 47.923488599999999, 'x': 3.6858501000000001}
    >>> r['candidates'][0]['attributes']['MatchLevel']
    'city'
    @+

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 396
    Points : 36 951
    Points
    36 951
    Par défaut
    Salut,

    Si c'est du texte, c'est une chose "sérialisée", externe à Python: et même si çà ressemble suffisamment à... il n'est pas forcément "judicieux" de faire "exec" ou "eval" (ou de l'interpréter via cut&paste comme le propose PauseKawa).
    En tant que chose sérialisée, çà ressemble fortement à du JSON.
    Donc, "on peut" passer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # le texte sérialisé
    TEXT = u"""{"spatialReference":{"wkid":4326},"candidates":[{"address":"Paris, ile de france 75110 Paris, FRA","location":{"x":3.6858501,"y":47.9234886},"score":81,"attributes":{"MatchLevel":"city","Score":81,"North_Lat":"45.9328003","South_Lat":"45.9109001","West_Lon":"6.6802702","East_Lon":"6.73383"}}]}"""
     
    import json, pprint
    dd = json.loads(TEXT)  # transformé en objets Python
    pprint.pprint( dd) # affichage "joli"
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {u'candidates': [{u'address': u'Paris, ile de france 75110 Paris, FRA',
                      u'attributes': {u'East_Lon': u'6.73383',
                                      u'MatchLevel': u'city',
                                      u'North_Lat': u'45.9328003',
                                      u'Score': 81,
                                      u'South_Lat': u'45.9109001',
                                      u'West_Lon': u'6.6802702'},
                      u'location': {u'x': 3.6858501, u'y': 47.9234886},
                      u'score': 81}],
     u'spatialReference': {u'wkid': 4326}}
    Pour le reste, on peut naviguer la dedans de la même façon que proposé par PauseKawa. La différence n'est que sur "comment" dé-sérialiser.

    - W

  4. #4
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    C'est bien à eval que j'avais penser...
    L'exemple est trompeur: avec un true ou un null dedans cela aurais été plus frappant.

    Edit:
    Cela aurais 'presque' marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> TEXT = """{"spatialReference":{"wkid":4326},"candidates":[{"address":"Paris, ile de france75110 Paris, FRA","location":{"x":3.6858501,"y":47.9234886},"score":81,"attributes":{"MatchLevel":"city","Score":null,"North_Lat":"45.9328003","South_Lat":"45.9109001","West_Lon":"6.6802702","East_Lon":"6.73383"}}]}"""
    >>> translate = {'true': True, 'false': False, 'null': None, 'object': dict, 'array': list} # Etc...
    >>> r = eval(TEXT, translate)
    >>> r
    {'candidates': [{'attributes': {'South_Lat': '45.9109001', 'North_Lat': '45.9328003', 'MatchLevel': 'city', 'West_Lon': '6.6802702', 'Score': None, 'East_Lon': '6.73383'}, 'score': 81, 'location': {'y': 47.923488599999999, 'x': 3.6858501000000001}, 'address': 'Paris, ile de france75110 Paris, FRA'}], 'spatialReference': {'wkid': 4326}}
    Bon, ok --->[]

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 396
    Points : 36 951
    Points
    36 951
    Par défaut
    Salut,

    Citation Envoyé par PauseKawa Voir le message
    C'est bien à eval que j'avais penser...
    L'exemple est trompeur: avec un true ou un null dedans cela aurais été plus frappant.

    Cà ressemble à du JSON mais seul l'auteur du post sait peut être où on été volées ces lignes et le "codage" qui a été appliqué pour les générer.
    Je voulais simplement "dire" - texte = format externe donc moulinette pour transformer cela en représentation "interne" avec le décodeur qui semble aller le mieux.
    - W

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    ok merci.

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Juste pour l'info cortal74: c'est quoi comme codage ?

    @+

Discussions similaires

  1. Générer fichier texte avec mot de passe
    Par oieretxe dans le forum Android
    Réponses: 5
    Dernier message: 27/05/2015, 15h27
  2. filtrage texte mot clef
    Par tiboo dans le forum Modules
    Réponses: 10
    Dernier message: 11/08/2010, 12h10
  3. Ecriture Fichier texte avec mot de passe
    Par JOS.FRAN dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/03/2007, 22h53
  4. détection mot clef dans un texte
    Par Royd938 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/04/2006, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo