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 :

Copier une chaine de carateres dans un fichier


Sujet :

Python

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Copier une chaine de carateres dans un fichier
    Bonjour,
    Je suis encore débutant sur python, je voudrai faire une fonction qui me copie une chaine de caracteres que je connais mais qui vient apres par exemple 'code-' et se termine lorsqu'elle rencontre des guillemets.
    Merci

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonsoir.

    Pour avoir une réponse rapide, il faut au moins deux ingrédients qui ne sont pas présents ici.
    1. Une question claire.
    2. Un bout de code indiquant le problème, ou donnant un début de recherche.


    Cordialement.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rambc Voir le message
    Bonsoir.

    Pour avoir une réponse rapide, il faut au moins deux ingrédients qui ne sont pas présents ici.
    1. Une question claire.
    2. Un bout de code indiquant le problème, ou donnant un début de recherche.


    Cordialement.
    Merci pour ta réponse.

    Ce que je souhaite faire, c'est de sélectionner une sous chaine de caractères d'une chaine de caractères que je récupère d'un fichier que j'ouvre. Cette sous chaine de caractere commencer par des certains caractères et se termine aussi lors qu'elle rencontre certain caractere.

    Ce que j'ai fais pour le moment c'est ouvrir le fichier, je mets le contenu dans une liste avec readlines, pour la suite je bug je sais pas comment faire ni les fonctions des chaines de caractères avec lesquelles je peux bosser.

    Désolé si c'est pas clair, j'ai essayé de mon mieux pour vous faire voir l'algorithme.

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 893
    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 : 3 893
    Points : 7 249
    Points
    7 249
    Par défaut
    Ce qui serait intéressant est surtout de voir un début de code, vous dites utiliser readlines (ce qui est un bon début), pourquoi ne pas le présenter?

    Vous avez la méthode startswith et endswith pour poser vos conditions quand au 1er et dernier caractère (il y a d'autres solutions).

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon voila ma fonction, ça va paraitre con c'est tout ce que j'ai fait pour le moment :

    def filtre(source,destination):
    fs = open(source, 'r')
    fd = open(destination, 'w')
    while 1:
    txt = fs.readline()
    if txt =='':
    break
    if txt[0].startswith(('<label id="')) :
    # là j'aimerai copier les caractères qui viennent après et s'arrêté une fois les caractères suivants "> seront trouvé
    fs.close()
    fd.close()
    return

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour,
    penses à utiliser la balise code symbolisé par #, et aussi à donner un fichier exemple montrant ce que tu veux ananlyser.

  7. #7
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Pour tester la valeur d'un caractère en python tu peux utiliser '==' (comme tu l'as déjà fait pour tester le caractère vide).

    Comme un string se comporte comme une liste (en partie) tu peux aussi le parcourir avec une boucle, lui ajouter des caractères, ...

    Par exemple, pour récupérer tous les "a" d'un string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string_test = 'blala'
    string_result = ''
    for letter in string_test:
      if letter == 'a':
        string_result += letter

  8. #8
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour

    attention : avec txt qui est une chaine de caractères (txt = fs.readline()), le test suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if txt[0].startswith(('<label id="'))
    est toujours faux.

    txt[0] est une chaine de 1 caractère (le premier de la chaine txt).

    Aucune chaine d'un seul caractère ne commence par quelque chaine à plusieurs caractères que ce soit. C'est txt qu'il faut tester.

    Sinon, je pense que passer un peu de temps à voir les chaines et les fonctions/méthodes associées t'aiderait.

    Regarde notamment :

    • find (pour trouver l'indice du caractère '>')
    • split (qui te découpe une chaine selon un délimiteur (bien choisi))


    De façon plus macroscopique, les chaines traitées sont apparemment issues d'un fichier avec un format "à balises". Il y a peut-être (sans doute) un module qui te permet de rechercher les éléments que tu veux, et leur contenu. Mais ce sera, peut-être, dans un deuxième temps, si tu débutes en Python

    Bonne continuation

Discussions similaires

  1. localiser une chaine de caratere dans un fichier Excel
    Par bakaratoun dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2011, 14h04
  2. [VB]Recherche d'une chaine de caractère dans un fichier
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 16/02/2006, 09h10
  3. Ecriture d'une chaine de caractères dans un fichier
    Par fleur_de_rose dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2006, 09h34
  4. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52
  5. Réponses: 7
    Dernier message: 27/09/2005, 11h54

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