Partage
  • Partager sur Facebook
  • Partager sur Twitter

Contrôle des entrées textes pour un site web

Je n'arrive pas à signifier le saut de ligne comme je fais d'habitude

Sujet résolu
    11 septembre 2022 à 19:31:09

    Bonjour

    J'ai une fonction qui contrôle les caractères d'un texte saisi par un visiteur. Elle regarde si le caractère est une lettre, majuscule ou minuscule, accentuée ou pas, ou un parmi ceux-ci : signes = "'’°.,?!:€$;-(—)«» %*\n" + '"'. 

    je pensais que le truc qu'on emploie en python pour créer un saut de ligne, \n, convenait, mais non.

    Que le saut de ligne vienne du clavier, ou d'un fichier texte collé, c'est pareil.

    -
    Edité par zakod 11 septembre 2022 à 19:31:31

    • Partager sur Facebook
    • Partager sur Twitter

    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

      11 septembre 2022 à 19:41:14

      je ne comprend pas ta question un saut de ligne c'est ceci \n

      -
      Edité par TheSmiley 11 septembre 2022 à 19:41:23

      • Partager sur Facebook
      • Partager sur Twitter
        11 septembre 2022 à 20:44:12

        Bonjour,


        Quelques précisions sont nécessaires (c'est sur Django ou que sais-je ?) et un peu de code peut-être ?
        Une question ?
        Bref, le b.a-ba quand on demande un peu d'aide.

        • Partager sur Facebook
        • Partager sur Twitter
          12 septembre 2022 à 6:40:11

          Bonjour,

          zakod a écrit:

          Bonjour

          J'ai une fonction qui contrôle les caractères d'un texte saisi par un visiteur. Elle regarde si le caractère est une lettre, majuscule ou minuscule, accentuée ou pas, ou un parmi ceux-ci : signes = "'’°.,?!:€$;-(—)«» %*\n" + '"'. 

          je pensais que le truc qu'on emploie en python pour créer un saut de ligne, \n, convenait, mais non.

          Comme les autres intervenants, je ne saisie pas la demande...

          Exemple de code:

          >>> def valide(saisie):
          	""" retourne True si saisie conforme, False si saisie érronée"""
          	témoins = string.ascii_letters + "éàèçêÉÀÈ" + "'’°.,?!:€$;-(—)«» %*\n" + '"'
          	return all(True if lettre in témoins else False for lettre in saisie)
          
          >>> s = """Les arbres se
          meurent..."""
          >>> valide(s)
          True
          >>> s = """Les arbres se
          meurent... 
          1 massacre!"""
          >>> valide(s)
          False
          >>> 



          • Partager sur Facebook
          • Partager sur Twitter
          • J'aime les bananes, le python, le gnu, le pingouin.
            • Vive le libre !
            12 septembre 2022 à 10:28:48

            Est-ce que la question concerne vraiment un code python ?

            -
            Edité par umfred 12 septembre 2022 à 10:29:01

            • Partager sur Facebook
            • Partager sur Twitter
              12 septembre 2022 à 10:32:58

              Merci TheSmiley, ErispoeleNarvalo et _fabien. Mon code est équivalent à celui de _fabien, le souci c'est que quand un utilisateur entre un texte avec saut de ligne, ma fonction refuse le saut de ligne. J'ai mis un espion, donc je vois quel caractère elle refuse, c'est bien à l'endroit de n'importe quel saut de ligne, c'est à dre la touche enter.
              Merci quand-même pour l'exemple de la fonction all(), je connaissais pas. En fait, je n'ai pas encore abordé les itérables, je fais tout à l'ancienne. 
              Avec ma solution avec boucle, j'ai un espion qui me montre quel est le caractère défectueux. Avec all(), pour être sûr, j'ai testé la saisie avec et sans le saut de ligne. Et ça marche toujours pas.
              Je me suis demandé si ça ne venait pas d'un problème que j'ai déjà rencontré, une autre façon différente (de mémoire, il y avait un \n et un \r) de coder le saut de ligne. Ceci arriverait si on collait un fichier ainsi codé. Mais la fonction refuse la touche enter du clavier, et pour l'essai en collant un fichier .txt, il est bien encodé en utf8. Je pige pas.
              • Partager sur Facebook
              • Partager sur Twitter

              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                12 septembre 2022 à 10:37:41

                bah si tu sais quel caractère ta fonction refuse, il suffit de le rajouter à ta liste, non ? il a quel tête ce caractère refusé ?
                • Partager sur Facebook
                • Partager sur Twitter
                  12 septembre 2022 à 12:28:12

                  Ké kon ! C'est vrai, ça ne me coûtait rien d'essayer. Je l'avais pas fait, parce que pour moi, le saut de ligne encodé en utf8, c'est \n. J'ai ajouté le \r, et dans la foulée le \t (tabulation). Et ça marche !
                  • Partager sur Facebook
                  • Partager sur Twitter

                  S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                    12 septembre 2022 à 12:48:02

                    si je comprends bien, tu récupérais lors d'un saut de ligne \r\n alors que tu ne t'attendais qu'à \n ? (en fait, ça dépend souvent du système, windows \r\n, linux \n)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 septembre 2022 à 14:36:54

                      Oui, je crois me souvenir, maintenant : retour charriot + saut de ligne sur Windows, simple \n sinon.

                      Voici ma synthèse, dites-moi si c'est correct : 

                      la touche enter sur le clavier mac donne \n, sur le clavier windows \r\n ;

                      un saut de ligne présent dans un fichier .txt, ça dépendra donc de ce qui l'a généré. Le fichier avec lequel j'ai testé venait de la reconnaissance de caractères d'un scanner (HP officejet pro). Et HP est plutôt windows que mac.

                      Je m'en sors de cette façon : texte.replace('\r\n', '<br/>'), suivi de ('\n', '<br/>'). Si ça vient de l'univers windows, la première passe vire les sauts de ligne windows, et si c'est mac, la première passe ne fait rien et c'est la seconde qui fait.

                      Merci pour votre aide.

                      PS : un problème qui se pose à moi, c'est l'alinéa. La personne qui poste ne peut le mettre, et pourtant j'aimerais bien qu'il y soit. Il est facile à décider automatiquement : début du texte et juste après chaque saut de ligne. Je ne vois que la tabulation. Je peux indiquer au posteur de mettre une tabul à la place de l'alinéa, mais ensuite, je crois que c'est quatre espaces ? C'est trop. À moins qu'on puisse le régler ?

                      -
                      Edité par zakod 12 septembre 2022 à 14:42:13

                      • Partager sur Facebook
                      • Partager sur Twitter

                      S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                        12 septembre 2022 à 15:07:55

                        de la même façon, tu peux remplacer la tabulation par 2 ou 3 espaces, ou rajouter ces espaces au <br/> de tes précéedents replace

                        ceci-dit en html, l'indentation/alinéa, c'est le style text-indent (qu'il faudra appliqué sur les paragraphes)

                        https://developer.mozilla.org/fr/docs/Web/CSS/text-indent (ce lien montre le mot clé each-line qui répondrait à ta demande, mais il n'est pas du tout géré pour le moment)

                        https://www.w3schools.com/cssref/pr_text_text-indent.asp 

                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 septembre 2022 à 17:42:34

                          text-indent, c'est la première ligne de chaque paragraphe, c'est déjà ça. Mais c'est insuffisant s'il y a plusieurs lignes dans le paragraphe. 

                          Les espaces et la tabul, html ne les affichent pas.

                          Si j'ai bien compris, la petite fiole, sur w3, c'est ce que tu dis, pas encore géré.  Y a qu'à attendre ! Ça finira bien par l'être. En attendant, j'ai trouvé une solution un peu foutraque : Je mets un span class = "alinea", et je mets color:white. Et dans le span, je mets aa ou oo, voire '' '' ou __ ou .... Ça va juste se compliquer si le back-ground n'est pas white.

                          • Partager sur Facebook
                          • Partager sur Twitter

                          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                            12 septembre 2022 à 19:03:11

                            tu peux mettre chaque ligne dans un paragraphe p, qui aura alors le text-align
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 septembre 2022 à 19:55:56

                              Oui, mais ça écarte les lignes, je crois. Je tiens à conserver le design de la page imprimée. Et puis ça raccourcit la page.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                                17 septembre 2022 à 19:54:40

                                Dernier épisode. Il m'est resté, pour un texte venant d'un fichier .txt issu du scanner, après avoir éliminé \n et \r, un caractère qui ne provoquait pas de saut de ligne, mais qui existait cependant puisqu'il était refusé par ma liste.

                                Il correspond à une erreur du logiciel de reconnaissance de caratère : le texte photographié présente un saut de ligne, mais le fichier issu de la reconnaissance de caractères, non. J'irai voir dans le livre, je crois deviner que ça arrive quand la dernière ligne du § arrive sur la marge droite.

                                La flèche gauche passait dessus sans bouger ! Donc il était là. Je l'ai capturé, mis dans un fichier, et une fonction me l'a décodé : 8232. J'ai vu qu'il s'appelait "séparateur de lignes". J'ai ajouté à ma chaine de contrôle  " + chr(8232)" et le tour est joué.

                                Merci à tous et bon dimanche.

                                • Partager sur Facebook
                                • Partager sur Twitter

                                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                                Contrôle des entrées textes pour un site web

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                • Editeur
                                • Markdown