Chapitre 6 - Wikimedia Commons

Transcription

Chapitre 6 - Wikimedia Commons
Les Chaînes
Chapitre 6
Python for Informatics: Exploring Information
www.pythonlearn.com
Le type de
données Chaînes
• Une chaîne est une séquence de
caractères
• Une chaîne utilise les guillemets
simples 'Hello' ou doubles “Hello”
• Entre chaînes, + signifie “concaténer”
• Une chaîne peut aussi contenir des
nombres
• Les nombres au format chaîne peuvent
être convertis en nombre avec int()
>>> str1 = "Hello”
>>> str2 = 'there'
>>> bob = str1 + str2
>>> print bob
Hellothere
>>> str3 = '123'
>>> str3 = str3 + 1
Traceback (most recent call
last): File "<stdin>", line
1, in <module>TypeError:
cannot concatenate 'str' and
'int' objects
>>> x = int(str3) + 1
>>> print x
124
>>>
Lecture et
Conversion
• Il est préférable de lire les
données d’entrée avec strings
pour ensuite convertir ces
données avec le type voulu
• Ceci nous donne plus de contôle
dans les situations où il y a des
erreurs et/ou sur les entrées
erronnées de l’utilisateur
• Pour obtenir un type numérique
avec raw_input() il est nécessaire
de convertir la chaîne
>>> name = raw_input('Enter:')
Enter:Chuck
>>> print name
Chuck
>>> apple = raw_input('Enter:')
Enter:100
>>> x = apple – 10
Traceback (most recent call
last): File "<stdin>", line 1,
in <module>TypeError:
unsupported operand type(s) for
-: 'str' and 'int'
>>> x = int(apple) – 10
>>> print x
90
Un coup d’oeil à l’intérieur
des chaînes
• On peut faire appel à un caractère
contenu dans une chaîne en utilisant un
index mis entre crochets
• La valeur de l’index doit être un entier et
le premier élément commence à zéro
• La valeur de l’index peut être le résulat d’
une expression
b a
0 1
>>>
>>>
>>>
a
>>>
>>>
>>>
n
n a n a
2 3 4 5
fruit = 'banana'
letter = fruit[1]
print letter
n = 3
w = fruit[n - 1]
print w
Un caractère trop loin
• Vous aurez une erreur python si
vous essayez l’indexation audelà de la fin d’une chaîne.
• Soyez donc prudents lors de la
construction des valeurs d’index
et des tranches
>>> zot = 'abc'
>>> print zot[5]
Traceback (most recent call
last): File "<stdin>", line
1, in <module>IndexError:
string index out of range
>>>
Les chaînes ont une longueur
• Il y a une fonction intégrée len qui
nous renvoie la longueur de la
chaîne
b a
0 1
n a n a
2 3 4 5
>>> fruit = 'banana'
>>> print len(fruit)
6
La fonction Len
Une fonction est un type
de code stocké pour notre
usage. Une fonction prend
une entrée et produit une
sortie.
>>> fruit = 'banana'
>>> x = len(fruit)
>>> print x
6
'banana'
(une chaîne)
fonction
len()
Guido a écrit ce code
6
(un nombre)
La fonction Len
Une fonction est un type
de code stocké pour notre
usage. Une fonction prend
une entrée et produit une
sortie.
>>> fruit = 'banana'
>>> x = len(fruit)
>>> print x
6
'banana'
(une chaîne)
def len(inp):
blah
blah
for x in y:
blah
blah
6
(un nombre)
Boucler les chaînes
• En utilisant la déclaration
while et une variable d’
itération ,ainsi que la fonction
len, on peut construire une
boucle pour visualiser
individuellement chaque
lettre présente dans la chaîne
fruit = 'banana'
index = 0
while index < len(fruit):
letter = fruit[index]
print index, letter
index = index + 1
0b
1a
2n
3a
4n
5a
Boucler les chaînes
• Une boucle définie avec la
déclaration for est beaucoup
plus élégante
• la variable d’itération est
complètement prise en
charge par la boucle for
fruit = 'banana'
for letter in fruit:
print letter
b
a
n
a
n
a
Boucler les chaînes
• Une boucle définie avec la
déclaration for est beaucoup
plus élégante
• la variable d’itération est
complètement prise en
charge par la boucle for
fruit = 'banana'
for letter in fruit :
print letter
index = 0
while index < len(fruit) :
letter = fruit[index]
print letter
index = index + 1
b
a
n
a
n
a
Boucles et comptages
• Voici une boucle simple qui lit
une lettre après l’autre de la
chaîne et qui compte le
nombre de fois où la boucle
rencontre la lettre 'a'
word = 'banana'
count = 0
for letter in word :
if letter == 'a' :
count = count + 1
print count
Regardons plus en détail in
• La variable d’itération
“parcourt” la séquence
(ensemble ordonné)
• Le bloc (corps) du code est
exécuté une fois pour chaque
valeur in de la séquence
• la variable d’itération se
déplace à travers toutes les
valeurs in de la séquence
Variable d’itération
Chaîne de six caractères
for letter in 'banana' :
print letter
Oui
Fait?
Non
Lettre suivante
b a
n a n a
print letter
for letter in 'banana' :
print letter
La variable d’itération “parcourt” la chaîne. Le bloc du code est
exécuté une fois pour chaque valeur in de la séquence
M o n t y
P y t h o n
0 1 2 3 4 5 6 7 8 9 10 11
• On peut aussi prendre en
considération n’importe quelle
section continue d’une chaîne à
l’aide des deux points
• La valeur du second nombre
est au-delà de la fin de la
tranche - “jusqu’à mais non
inclu”
• Si le second nombre est audelà de la fin de la chaîne, il s’
arrête à la fin
>>> s = 'Monty
Python'
>>> print s[0:4]
Mont
>>> print s[6:7]
P
>>> print s[6:20]
Python
Tranchage de Chaînes
M o n t y
P y t h o n
0 1 2 3 4 5 6 7 8 9 10 11
• Si on omet le premier
nombre ou le dernier de la
tranche, ils deviennent
respectivement le début ou
la fin de la chaîne
>>> s = 'Monty Python'
>>> print s[:2]
Mo
>>> print s[8:]
Thon
>>> print s[:]
Monty Python
Tranchage de Chaînes
Concaténation de chaîne
• Quand l’opérateur + est
utilisé avec les chaînes, il
signifie "concaténation"
>>> a = 'Hello'
>>> b = a + 'There'
>>> print b
HelloThere
>>> c = a + ' ' + 'There'
>>> print c
Hello There
>>>
Utiliser in comme opérateur
• Le mot-clé in peut aussi
être utilisé pour vérifier si
une chaîne est contenue
dans une autre chaîne
• L’expression in est une
expression logique qui
retourne True ou False et
peut être utilisée dans une
condition if
>>> fruit = 'banana’
>>> 'n' in fruit
True
>>> 'm' in fruit
False
>>> 'nan' in fruit
True
>>> if 'a' in fruit :
...
print 'Found it!’
...
Found it!
>>>
Comparison de chaînes
if word == 'camarade':
print 'D’accord, camarades.'
if word <
print
elif word
print
else:
print
'camarade':
'Ton mot,' + word + ', vient avant camarade.’
> 'camarade':
'Ton mot,' + word + ', vient après camarade.’
'D’accord, camarades.'
Bibliothèque chaîne
• Python dispose d’un nombre de
fonctions chaînes, lesquelles sont
dans la bibliothèque chaîne (string)
• Ces fonctions sont déjà intégrées dans
chaque chaîne - l’appel à celles-ci se
fait en ajoutant la fonction à la
variable chaîne
• Ces fonctions ne modifient pas la
chaîne d’origine, au lieu de cela elles
renvoient une nouvelle chaîne qui a
été transformée
>>> greet = 'Hello Bob'
>>> zap = greet.lower()
>>> print zap
hello bob
>>> print greet
Hello Bob>
>> print 'Hi There'.lower()
hi there
>>>
>>> stuff = 'Hello world’
>>> type(stuff)<type 'str'>
>>> dir(stuff)
['capitalize', 'center', 'count', 'decode', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'index',
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower',
'lstrip', 'partition', 'replace', 'rfind', 'rindex',
'rjust', 'rpartition', 'rsplit', 'rstrip', 'split',
'splitlines', 'startswith', 'strip', 'swapcase',
'title', 'translate', 'upper', 'zfill']
http://docs.python.org/lib/string-methods.html
http://docs.python.org/lib/string-methods.html
Bibliothèque chaîne
str.capitalize()
str.center(width[, fillchar])
str.endswith(suffix[, start[, end]])
str.find(sub[, start[, end]])
str.lstrip([chars])
str.replace(old, new[, count])
str.lower()
str.rstrip([chars])
str.strip([chars])
str.upper()
http://docs.python.org/lib/string-methods.html
Recherche d’une chaîne
• On utilise la fonction find() pour
rechercher une sous-chaîne à l’
intérieur d’une chaîne
• find() trouve la première occurrence
de la sous-chaîne
• Si la sous-chaîne n’est pas trouvée,
find() retourne -1
• Rappelez-vous que la position de la
chaîne débute à zéro
b a
0 1
n a n a
2 3 4 5
>>> fruit = 'banana'
>>> pos = fruit.find
('na')
>>> print pos
2
>>> aa = fruit.find('z')
>>> print aa
-1
Changer tout en MAJUSCULE
• On peut faire la copie d’une
chaîne en minuscule ou majuscule
• Souvent quand on recherche une
chaîne avec find() - on converti d’
abord la chaîne en minuscule afin
de rechercher une chaîne
indépendamment de la casse
>>> greet
>>> nnn =
>>> print
HELLO BOB
>>> www =
>>> print
hello bob
>>>
= 'Hello Bob'
greet.upper()
nnn
greet.lower()
www
Recherche et Substitution
• La fonction replace() agit
comme l’opération
“rechercher et remplacer”
dans un traitement de
texte
• Elle remplace toutes les
occurrences de l’ancienne
chaîne par la nouvelle
chaîne
>>> greet = 'Hello Bob'
>>> nstr = greet.replace
('Bob','Jane')
>>> print nstr
Hello Jane
>>> nstr = greet.replace('o','X')
>>> print nstrHellX BXb
>>>
Suppression des espaces
• Parfois nous voulons supprimer
les espaces au début et/ou à la
fin d’une chaîne
• lstrip() et rstrip() supprime
respectivement les espaces à
gauche ou à droite de la chaîne
• strip() supprime à la fois les
espaces au début et à la fin de la
chaîne
>>> greet = '
Hello Bob
>>> greet.lstrip()
'Hello Bob '
>>> greet.rstrip()
'
Hello Bob'
>>> greet.strip()
'Hello Bob'
>>>
'
Préfixes
>>> line = 'Nous vous souhaitons une bonne journée’
>>> line.startswith('Nous')
True
>>> line.startswith('n')
False
21
31
From [email protected] Sat Jan 5 09:14:16 2008
>>> data = 'From [email protected] Sat Jan
14:16 2008’
>>> atpos = data.find('@')
>>> print atpos
21
>>> sppos = data.find(' ',atpos)
>>> print sppos
31
>>> host = data[atpos+1 : sppos]
>>> print host
uct.ac.za
5 09:
analyse et extraction
Résumé
• Le type chaîne
• Lecture/Conversion
• Indexation de chaînes []
• Tranchage de chaînes [2:4]
• Boucles for and while pour lire
une chaîne
• Concaténation de chaînes avec +
• Opérations de chaîne
Acknowledgements / Contributions
These slides are Copyright 2010- Charles R. Severance (www.
dr-chuck.com) of the University of Michigan School of Information
and open.umich.edu and made available under a Creative
Commons Attribution 4.0 License. Please maintain this last slide
in all copies of the document to comply with the attribution
requirements of the license. If you make a change, feel free to
add your name and organization to the list of contributors on this
page as you republish the materials.
Initial Development: Charles Severance, University of Michigan
School of Information
Translation: Frederic Foiry
...

Documents pareils