Nov 21, 2024

Wiki

Python

Aide

edit SideBar

Search

Les chaînes de caractères


Généralités

Présentation

Les chaînes de caractères sont un type de données composite constitué exclusivement de caractères. Elles ne sont pas modifiables : il faut créer une nouvelle chaîne, et y recopier ce que l'on souhaite changer.

Définition, et affichage

On les définit avec des apostrophes, ou des guillemets : 'aze' et "sqd" sont deux chaînes de caractères.

  >>> chaine = "Coucou"
  >>> chaine
  'Coucou'
  >>> type(chaine)
  <type 'str'>

On lit une chaîne de caractères avec raw_input(), en passant éventuellement le message à afficher en argument. On affiche le résultat avec print() :

  >>> chaine = input()
  Coucou
  >>> print(chaine)
  Coucou
  >>> dd = 'CouCou'
  >>> 'ou' in dd
  True
  >>> chaine2 = input("Votre chaîne : ")
  Votre chaîne : Coucou2
  >>> print(chaine2)
  Coucou2

On peut tout à fait placer un \n dans une chaîne de caractères, auquel cas on aura le saut de ligne attendu.

Opérations de base

Si toto est une chaîne de caractères, toto[i] est le caractère i+1 de cette chaîne, et len(toto) sa longueur. Enfin, on peut concaténer deux chaînes de caractères avec +, et aussi utiliser * :

  >>> toto = 'abcde'
  >>> len(toto) 
  5
  >>> toto[0]
  'a'
  >>> toto[1]
  'b'
  >>> toto[-1]
  'e'
  >>> toto + 'fg'
  'abcdefg'
  >>> 'fg'*3
  'fgfgfg'

On convertit la chaîne s='123' en nombre par int(s) (float, si c’est un réel). Enfin, on transforme le nombre N=123 en chaînes de caractères par str(N)...

  >>> s = '123'
  >>> s, type(s)
  ('123', <type 'str'>)
  >>> n = int(s)
  >>> n, type(n)
  (123, <type 'int'>)
  >>> str(n), n
  ('123', 123)

for, if et chaînes de caractères

Utilisation du for

La boucle for peut parcourir une chaîne de caractères. Par exemple :

  >>> for k in 'lettres':
  ...     print(k)
  ... 
  l
  e
  t
  t
  r 
  e
  s

Chaque lettre du mot lettres est affichée, une par ligne.

Utilisation du if

Dans le même esprit, la condition du if peut porter sur l’appartenance d’un caractère à une chaîne de caractères :

  >>> toto = 'aze'
  >>> if 'a' in toto :
  ...     print(toto)
  ...
  aze

Dans ce qui précède, la condition est vérifiée, donc 'aze' est affiché. On peut utiliser not in au lieu de in, si besoin est.

Des méthodes de la classe str

Modifications d’une chaîne

Les méthodes

replace(str1,str2)
Remplace str1 par str2 dans la chaîne courante.
capitalize()
Met le premier caractère de la chaîne courante en majuscule, et le reste en minuscule.
lower()
Met les caractères de la chaîne courante en minuscule.
upper()
Met les caractères de la chaîne courante en majuscule.
swapcase()
Transforme majuscule en minuscule, et inversement.
ljust(int)
Complète la chaîne de caractères avec des espaces, jusqu’à ce qu’elle ait pour longueur int (ne fait rien si la chaîne est déjà plus grande.)
lstrip(str)
Si str est en tête de la chaîne courante, le supprime.

Dans les deux précédentes méthodes, on peut remplacer l par r, pour effectuer les actions non pas à gauche, mais à droite.

Exemple de modifications

Illustrons certaines des méthodes précédentes :

  >>> 'abs'.replace('s','c')
  'abc'
  >>> 'qAd'.lstrip('A')
  'qAd'
  >>> 'qAd'.lstrip('qA')
  'd'

Tests sur une chaîne

Les méthodes

endswith(str)
Se termine par la chaîne str.
startswith(str)
Commence par la chaîne str.
isdigit()
Teste si la chaîne concernée est constituée de chiffres.
isalpha()
Teste si la chaîne concernée est constituée de lettres.
isalnum()
Teste si la chaîne concernée est constituée de caractères alphanumériques.
islower()
Teste si la chaîne concernée ne contient que des minuscules.
isupper()
Teste si la chaîne concernée ne contient que des majuscules.
isspace()
Teste si la chaîne concernée ne contient que des espaces.

Exemples de tests

Illustrons les méthodes précédentes :

  >>> 'toto'.endswith('o')
  True
  >>> 'azea'.islower()
  True

Divers

Les méthodes

count(str)
Compte le nombre d’occurrences de str.
encode('utf8')
Encode la chaîne de caractères en utf8 (ou 'ascii', 'latin1', 'iso-8859-15').
join(str)
Insère la chaîne courante entre chaque caractère de str.
find(str)
Renvoie l'emplacement de la première occurrence de str dans la chaîne courante, et -1 si str n’a pas été trouvé.
split(str)
Coupe la chaîne courante dès qu’il rencontre la chaîne str.
splitlines()
Correspond à split('\n').
zfill(int)
Si la chaîne courante est plus petite que int, on place des 0 en début de chaîne jusqu’à obtenir la longueur souhaitée.

Exemples

Illustrons les méthodes précédentes :

  >>> 'aze'.join('xwc')
  'xazewazec'
  >>> 'abs'.find('s')
  2
  >>> 'q d ez zzz'.split(' ')
  ['q', 'd', 'ez', 'zzz']

Travaux pratiques

De minuscules en majuscules

  1. Faire un bout de code permettant de mettre toutes les lettres d'un mot en majuscule.
  2. Faire un bout de code permettant de mettre tous les mots d'une phrase en majuscule.
  3. Faire, enfin, un bout de code pour transformer chaque mot d'une phrase en : une majuscule, suivi de minuscules. Par exemple, "coucou comment va ?" deviendra "Coucou Comment Va"

Codes secrets

Réalisez le chiffrement/déchiffrement d'une chaîne de caractères, en se basant sur la méthode dite de transposition en dents de scie : pour chiffrer le message

transposition en dents de scie

on l'écrit sur deux lignes, en dents de scie justement :

                      t a s o i i n n e t d s i
                       r n p s t o e d n s e c e

Ce qui donne, quand on concatène les deux lignes, le chiffré :

tasoiinnetdsirnpstoednsece

On pourra faire deux fonctions : l'une pour le chiffrement, et l'autre pour le déchiffrement.

Palindromes et anagrammes

Faire un code python qui teste si un mot est soit un palindrome, soit une anagramme.

N.B.: manière pythonique de tester si un mot est palindromique

  >>> mot == mot[::-1]

et pour les anagrammes :

  >>> from collections import Counter
  >>> print(Counter('elbow') == Counter('below'))

Page Actions

Recent Changes

Group & Page

Back Links