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 :

Interprétation du \n pour retour à la ligne


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Interprétation du \n pour retour à la ligne
    Bonjour !!

    Après 2 jours de recherche sur Internet en vain, je vais poser directement ma question, j'espère que ce sera plus rapide

    Je débute en python et je dois afficher le code html d'une page web. Le problème, c'est que les caractères de début et de fin de ligne ont été traduits par les caractères spéciaux b' et \n'. Or, ces caractères apparaissent lorsque je lance le script au lieu d'être interprétés. Voici le code :

    import urllib.request

    page = urllib.request.urlopen('http://python.org') # récupère le fichier hmtl

    ...

    ensemble = page.readlines() # récupère le reste du contenu de la page

    print (ensemble)

    page.close()

    Au final, pas de retour à la ligne, les lignes sont seulement bornées par b' et \n'... Sous python 2.7, je suis face au même problème (seulement un \n' symbolise la ligne). J'ai le même problème en faisant une boucle for et en utilisant readline.

    Comment faire un bête retour à la ligne ?

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 478
    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 478
    Points : 9 280
    Points
    9 280
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    le résultat renvoyé par page.readlines() n'est pas un texte, mais une liste de lignes. On peut l'afficher avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ligne in ensemble:
        print (ligne.rstrip())
    Si on veut fabriquer une chaine qui comprend toutes les lignes, on peut faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte = ''.join(ensemble)
    Mais dans ce cas, on pouvait utiliser directement:

    qui ne renvoie pas une liste de lignes comme .readlines() mais le texte complet d'un seul coup.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour cette réponse.

    Néanmoins, je me suis mal exprimée je crois. Je voudrais savoir s'il est obligatoire que les "balises" entourant chaque élément de la liste (ou chaque ligne d'un texte) soient pas apparentes lorsque je lance le programme. Je ne les souhaite pas.

    En gros, est-il possible d'afficher le texte tel quel, avec un retour à la ligne visuel mais pas symbolisé par des caractères ?

    C'est surement stupide comme question mais je ne trouve pas la réponse...

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 478
    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 478
    Points : 9 280
    Points
    9 280
    Billets dans le blog
    6
    Par défaut
    Il faut bien distinguer:
    - le texte lui-même, tel qu'on peut le lire dans un simple éditeur de texte
    - le code html, tel qu'il sera interprété par un navigateur

    C'est tellement différent qu'on peut avoir un texte composé d'une seule ligne très longue, qui donne une page web tout à fait normale dans un navigateur.

    Autrement dit, les '\n' du texte ne sont pas interprétés par le navigateur pour afficher la page web.

    On peut par contre forcer un retour à la ligne d'un texte dans la page web en ajoutant, par exemple, un tag "<br>".

Discussions similaires

  1. printf command ne fonctionne pas pour retour à la ligne.
    Par mitchreward dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/02/2014, 13h17
  2. Réponses: 6
    Dernier message: 13/10/2013, 11h14
  3. Retour à la ligne pour un paragraphe
    Par Aline2611 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 03/08/2006, 11h54
  4. Retour à la ligne qui compte pour 2 caractères!
    Par Pragmateek dans le forum C++
    Réponses: 5
    Dernier message: 04/04/2006, 16h59
  5. [CSS] Retour à la ligne pour un lien
    Par Coming_next dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 17/03/2006, 14h05

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