Le piège de la méthode strip() des chaînes en Python 6


strip(), et ses acolytes lstrip() et rstrip(), ne retirent pas la chaîne de caractères aux extrémités d’une autre chaîne de caractères.

Elles retirent des extrémités toutes lettres qui sont dans la chaînes passée en paramètre. La nuance est subtile, mais c’est la différence entre ça:

>>> "# ##  # test ".strip('# ') # comportement attendu mais faux
'##  # test '

Et ça:

>>> "# ##  # test ".strip('# ') # comportement réel
'test'

Leave a comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

6 thoughts on “Le piège de la méthode strip() des chaînes en Python

  • Recher

    Merci pour l’info. Cependant, c’est un léger Captain Obvious, puisque c’est déjà expliqué dans la doc de python, avec exemple à l’appui :
    http://docs.python.org/library/stdtypes.html#str.strip

    Un truc un peu moins Captain Obvious, et que j’aimerais bien savoir, c’est la liste exacte des caractères strippés lorsqu’on exécute la fonction sans paramètres.

    L’aide indique laconiquement que ça enlève les “whitespace characters”. Ca enlève les ” “, mais aussi d’autres choses plus ou moins folkloriques : tabulations, saut de lignes. Je serais curieux de les connaître exhaustivement.

    Exemple :

    &gt;&gt;&gt; a = '\t \r \n plop  plup \n \r \t'
    >>> a.strip()
    'plop  plup'
  • Recher

    Traitement de caractère spéciaux fail ?

    Puisque c’est comme ça j’essaie des trucs.

    &

    alert(‘XSS dans tes fesses’)

    &

    alert('XSS dans tes fesses')

     &amp; <!-- burp -->
     
    alert('XSS dans tes fesses')
  • Sam Post author

    Il faut utiliser les boutons “code” et “code coloré” dans la barre d’outils au dessus du formulaire de commande.

    edit: Ah, mais tu l’as fais en fait. Putain de wordpress…

  • fpp


    string.whitespace

    A string containing all characters that are considered whitespace. On most systems this includes the characters space, tab, linefeed, return, formfeed, and vertical tab.

  • fpp


    In [1]: import string
    In [2]: string.whitespace
    Out[2]: '\t\n\x0b\x0c\r '

  • Recher

    Ah bien vu, m’sieur Achille Talon. Ca marche.

    Merci pour l’info !

    Sur ce, je laisse Sam et/ou Max débugger tout le code de WordPress.