Accueil » Tutoriels Python » Remplacement de chaîne en Python

Remplacement de chaîne en Python

Document Actions

Par gawel le 04/11/2006 13:03

On a souvent besoin de remplacer une chaîne par une autre.
En Python, il y a plusieurs moyen d'y parvenir.

Catégories : autre
Modules python : re,string
Version Python : 2.3 et >

Le plus simple est d'utiliser la méthode 'replace':

>>> s = 'une chaîne'
>>> s.replace(' ',' autre ')
'une autre chaîne'

C'est facile et rapide, mais limité.

L'autre moyen est d'utiliser le module re Il permets un remplacement souple et puissant. Bien sûr, c'est plus lent. Voici la correspondance avec l'exemple précédent:

>>> s = 'une chaîne'
>>> re.sub(r'\s',' autre ',s)
'une autre chaîne'

L'avantage, c'est que l'on est pas obligé de remplacer une chaîne par une autre. L'élément de remplacement peut être une fonction. Toujours pour l'exemple précédent:

>>> def sub(g):
...     return ' autre '
...
>>> s = 'une chaîne'
>>> re.sub(r'\s',sub,s)
'une autre chaîne'

Jusque là, on ne voit pas trop l'intérêt, je suis d'accord. L'intérêt, c'est que le module re est puissant. Voici un exemple plus complexe:

>>> html = """
... j'ai un <a href="/une_page">lien relatif</a>
... et un <a href="http://afpy.org/">lien absolu</a>. Pas cool
... """
>>>
>>> def sub(g):
...     start = g.group('start')
...     url = g.group('url')
...     if url.startswith('/'):
...         url = 'http://afpy.org%s' % url
...     end = g.group('end')
...     return start + url + end
...
>>> print re.sub(r'(?P<start>.*href=")(?P<url>\S+)(?P<end>".*)',sub,html)

j'ai un <a href="http://afpy.org/une_page">lien relatif</a>
et un <a href="http://afpy.org/">lien absolu</a>. Pas cool

Ca devient tout de suite plus intéressant. Non ?

Je m'arreterais la. Ce tutorial n'as pas pour vocation de vous apprendre les regexp. Si vous voulez en savoir plus, consulter la doc Python sur le module re.

A noter tout de même un soft sympa pour tester vos regexp: Kodos.

pour traiter spécifiquement du html

Posté par palm6174 le 07/11/2006 16:12
il y a Beautiful Soup qui accepte bien les fichiers avec des balises mal refermées.

http://www.crummy.com/software/BeautifulSoup/

La doc est à
http://www.crummy.com/software/BeautifulSoup/documentation.html

et pour les exemples
http://www.crummy.com/software/BeautifulSoup/documentation.html#Applications%20that%20use%20Beautiful%20Soup

tutoriel re

Posté par ychaouche le 16/05/2007 17:58
peut être un document intéressant de kuchling (développeur python)

http://www.amk.ca/python/howto/regex/regex.html
Aidez l'AfPy

Rechercher
Dernières news AFPY
Les 6 dernières news
PyCon FR - 17-18 mai - Paris
07/05/2008 07:05
AFPyro d'Avril
24/04/2008 00:00