5.python Chaines PDF
5.python Chaines PDF
5.python Chaines PDF
par X. HINAULT
www.mon-club-elec.fr
Document gratuit.
Ce support PDF d'atelier Python + Qt vous est offert.
Pour acheter d'autres supports d'ateliers Python rendez-vous ici :
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.PythonShell
Vous avez constaté une erreur ? une coquille ? N'hésitez pas à nous le signaler à cette adresse : support@mon-club-elec.fr
Truc d'utilisation : visualiser ce document en mode diaporama dans le visionneur PDF. Navigation avec les flèches HAUT / BAS ou la souris.
En mode fenêtre, activer le panneau latéral vous facilitera la navigation dans le document. Bonne lecture !
Difficile de faire plus simple. Et remarquer qu'il n'a pas été nécessaire de préciser le type de notre variable. En langage Python, les chaînes de
caractères sont stockées dans le type 'str'. La variable déclarée ici a été automatiquement typée, comme vous pouvez le vérifier en posant :
>>> type(maChaine)
<type 'str'>
Il est également possible de déclarer une chaîne multiligne en l'encadrant avec des triples " " ", ce qui donne :
>>> monTexte="""blablabla
... bliblibli
... bloblo
... bloubloublou
... """
>>> print monTexte
blablabla
bliblibli
bloblo
bloubloublou
Cette possibilité de définir une chaîne de caractère multiligne est très très intéressante notamment pour intégrer par simple copier/coller des extraits de
code HTML ou autre « tel que » dans un script. Retenez çà... !!
Le type str dispose de nombreuses fonctions et nous allons ici présenter quelques-unes intéressantes en pratique :
http://docs.python.org/2/library/stdtypes.html#string-methods
Cette fois, on retrouve le même message d'erreur que précédemment, mais ici nous voulions le résultat opposé : réalisé une opération mathématique sur
la valeur a, défini ici comme une chaîne. Il va falloir là encore « caster » la variable, c'est à dire la transformer dans un type numérique, au choix int,
long ou float, ce qui donne :
>>> a="123"
>>> a=int(a)+3
>>> print a
126
>>> type(a)
0: <type 'int'>
Une fonction comparable existe pour tester si une chaîne ne contient que des caractères alpha-numériques : isalnum(). Exemple :
>>> a="123ab ;"
>>> if a.isalnum():
... print "que des chiffres et lettres"
... else:
... print "pas que des chiffres et lettres"
Moins utile, mais à ne pas confondre isalnum() et isdigit()
Voir : http://docs.python.org/2/library/stdtypes.html#str.split
On obtient une liste contenant les chaînes correspondant aux lignes. Noter que le caractère de fin de ligne est exclu des lignes obtenues.
Voir : http://docs.python.org/2/library/stdtypes.html#str.splitlines
Plus précise, la fonction find() renvoie l'index de la première occurrence d'une sous-chaîne au sein d'une chaîne. find() renvoie -1 si la sous-chaîne n'est
pas retrouvée. Exemple :
>>> chaine="coucou"
>>> chaine.find("ou")
5: 1
>>> chaine.find("on")
6: -1
Si on veut compter le nombre d'occurrences d'une sous-chaîne dans une chaîne, on fera :
>>> chaine="coucou"
>>> chaine.count("ou")
2
Pratique également, la fonction startswith qui permet de tester si une chaîne commence par une sous-chaîne précise. Exemple :
>>> requete="GET /page.html HTTP/1.1"
>>> requete.startswith("GET")
7: True
A l'inverse, la chaîne endswith permet de tester si une chaîne se termine bien par une sous-chaîne précise :
>>> chaine="valeur=245=:"
>>> chaine.endswith("=:")
9: True
Retenez bien ce système de notation car il vous servira souvent, aussi bien avec des listes, des chaînes de caractères que des tableau Numpy,
etc... Très pratique et puissant !
Autres fonctions
Nous venons de voir quelques fonctions essentielles en pratique pour manipuler des chaînes de caractères. Cependant, les fonctions de l'objet str sont
beaucoup plus nombreuses et vous les découvrirez à l'usage selon vos besoin.
Voir ici : http://docs.python.org/2/library/stdtypes.html#string-methods
>>>
Remarque : la fonction « print » de la console intègre automatiquement un saut de ligne. Pour éviter le saut de ligne, ajouter simplement une virgule en
fin d'instruction. Exemple :
>>> for i in range(10):
... print i
0
1
2
3
4
5
6
7
8
9
>>> for i in range(10):
... print i,
0123456789
Truc avancé : Exécuter une chaîne de caractère en tant que fonction Python
Une dernière chose qui pourra vous être utile à l'occasion : il est possible d'exécuter une chaîne de caractère en tant qu'instruction Python avec la
fonction eval(). L'utilisation de cette fonction n'est pas recommandée, mais il est des situations où cela peut être pratique.
Par exemple, imaginons que l'on réalise une interface avec une zone texte dans laquelle il est possible de saisir une formule : il sera ainsi possible de
rendre l'application puissamment interactive.
Par exemple, voici un calcul réalisé de la sorte :
>>> x=23
>>> chaine="(x*3)+2"
>>> print eval(chaine)
71
En pratique, ceci est déconseillé car cela peut créer des failles de sécurité significatives.
Conclusion
A ce stade, vous avez les rudiments pour utiliser efficacement les chaînes de caractères en langage Python. N'hésitez pas à faire vos propres essais dans
votre interpréteur favori, c'est comme çà qu'on apprend à coder ! Et maîtriser ces choses en apparence simple vous simplifiera grandement l'existence
lorsque vous attaquerez des codages plus complexes.
Remarque
...
Exercices
Trouver la chaîne la plus longue et son indice de début dans une suite de caractères :
#!/usr/bin/python
# -*- coding: utf-8 -*-
#!/usr/bin/python
# -*- coding: utf-8 -*-
# test.py
import re
test="001100220000000222211110022111100222110001110001100011001122222220011"
resultList= [ [i.start(), i.end()-i.start()] for i in re.finditer('0+', test)] # liste des indexStart / longeur
lenList= [j[1] for j in resultList] # liste des longueurs des chaines trouvées
print (resultList)
print (lenList)
print (index)
print (indexStart)