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 :

chaine de caractere


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut chaine de caractere
    salut
    je voudrais savoire comment retourner en python une chaine de caractere dans un texte
    par exemple cette chaine de caractere:

    248.386 228.65 mo
    (123492-1243)
    [7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh
    je veux k il me retourner (123492-1243),sachant que 248.386 228.65 mo et [7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh sont des variables que je connais deja

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut pas clair
    Ça veut dire quoi "retourner un chaîne de caractères" ?
    Ce ne serait pas plutôt "retrouver une chaîne" , étant donné l'exemple que tu donnes ?

    dans quoi se trouve
    248.386 228.65 mo
    (123492-1243)
    [7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh
    ???
    Ces caractères sont tous dans une variable et il faut distinguer (123492-1243) du reste, sachant que le reste se trouve dans deux autres variables ?

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Je pense que pour faire un programme ordonné il faut deja bien savoir ce qu'on fait. Dans ce cas on ne comprend ni le but, ni les termes, ni la phrase.

    Le problème n'est pas posé correctement et explicitement

    L'objectif à atteindre n'est pas suffisament compréhensible

    La question que je me pose :

    Comment peux-tu aider?

    Simplement en reprenant ce post depuis le début, avec des belles phrases, prendre le temps de poser le problème avec précisions et surtout se mettre à la place des lecteurs

    Sur ce genre de post, je n'essaie même plus de comprendre

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut string
    desolée si j'explique mal,
    j'ai un fichier texte et je veux extraire un string qui se trouve entre deux autres strings.
    ex:
    string1
    ma chaine que je veux extraire
    string2
    je veux une fonction qui prend comme parametre string1 et string2 et qui me retourne :' ma chaine que je veux extraire'
    j'ai essayé un petit programme qui me donne le resultat que je veux mais il ne traite pas le retour de la ligne et aussi c'est juste pour cet exemple: ma chaine a extraire se trouve entre parentheses, c'est un cas particulier .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    chaine='248.386 228.65 mo(123492-1243)[7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh'
    results= [x[0] for x in [x.split(')') for x in chaine.split('(')[1::]]]
    for i in results:
        print i
    donc ce n'est pas que je veux

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Pourquoi n'utilises-tu pas le module "re"?

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    f=open('fichier.txt', 'r')
    f=f.read()
    nombre=re.findall('[0-9]{6}-[0-9]{4}', f)
     
    print nombre
    Tu demandes à trouver tous les nombres du style xxxxxx-xxxx dans le fichier texte f

    Les expressions régulières sont une des choses incontournables de la programmation.

    Moi même ne le maîtrise pas correctement, c'est un apprentissage qui peut etre plus ou moins long mais utile.


  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    En fonction de ce que j'ai compris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    def extraitchaine(string1, string2, chaine):
        return chaine[len(string1):len(chaine)-len(string2)]
     
    string1='248.386 228.65 mo'
    string2='[7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh'
    chaine='248.386 228.65 mo(123492-1243)[7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh'
     
    print extraitchaine(string1, string2, chaine)
    Ce qui affiche:

    Tyrtamos

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut
    merci de la reponse
    mais je ne sais pas la longueur de la chaine ,c'est un fichier texte et je dois trouver une chaine entre deux autres chaines que je connais deja
    peut etre la solution c'est utiliser les expressions regulieres mais je ne sais pas comment

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Si jamais tes chaines ne sont pas respectivement au début et à la fin, tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def extraire(debut, fin, chaine):
        apres = chaine.partition(debut)[2]
        return apres.rpartition(fin)[0]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> debut = '248.386 228.65 mo'
    >>> fin = '[7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh'
    >>> chaine='248.386 228.65 mo(123492-1243)[7 7 7 7 7 7 4.6619 7 7 7 0 ]xsh'
    >>> extraire(debut, fin, chaine)
    '(123492-1243)'

  9. #9
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Par défaut
    merci mais je crois avant d 'appeler votre fonction je dois trouver la chaine d'abord

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Réponses: 13
    Dernier message: 13/06/2003, 14h13
  3. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58
  4. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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