Texte (string)

Un texte est une chaine de caractères.

typewriter

Le texte standard (ASCII code) consiste en

  • 26 lettres minuscules (a-z)

  • 26 lettres majuscules (A-Z)

  • 10 chiffres (0-9)

ainsi que de caractères spéciaux:

  • ponctuation (.,;:?!)

  • délimiteurs ((){}[]<>"')

  • symboles ($%&)

  • opérateurs (+-*/)

Concepts

Les concepts présentés dans ce chapitre sont

  • création de string s = 'hello'

  • délimitation par un guillemet simple ' ou double "

  • caractère d’échappement \

Les indexages

  • index simple s[i] pour accéder à un seul caractère

  • tranche s[m:n] pour accéder à une sous-chaine

  • tranche s[::i] avec incrément (2) et chaine inversée (-1)

Les fonctions

  • len() pour retourner la longueur

  • str() pour transformer nombre en chaine

  • int() pour transformer chaine en nombre

Les opérateurs

  • + de concaténation

  • * de répétition

Délimitation

Une chaine de caractères est délimitée par des guillemets anglais simples '.

'hello'
'hello'

ou des guillemets anglais doubles ".
Attention: il ne faut pas confondre le guillemet double " (1 caractère) avec deux guillemets simples '' (2 caractères).

"world"
'world'

Si le texte contient déjà un guillemet simple (apostrophe), on entoure le texte avec des guillemets doubles.

"c'est bien"
"c'est bien"

Si une chaine contient les deux sortes de guillemets, on les précède avec une barre oblique inverse \ (backslash) qui est le caractère d’échappement.

s = 'c\'est "très" bien'
print(s)
c'est "très" bien

Longueur

Une chaine s’appelle string en anglais.
C’est pour cela que nous utilisons souvent s comme variable pour désigner une chaine.
Par exemple:

s = 'Python'

La fonction len() retourne la longueur de la chaine.

len(s)
6

Index

Chaque caractère d’une chaine peut être accédé par son index (sa position).
Un index est un nombre entier, commençant avec 0 pour le premier caractère.

Voici la première et deuxième lettre du texte s

s[0], s[1]
('P', 'y')

Un index négatif permet d’accéder à une chaine depuis sa fin. Voici la dernière et avant-dernière lettre du string s.

s[-1], s[-2]
('n', 'o')

Tranche

Une tranche est un sous-ensemble d’une chaine indiqué par indice de la forme [m:n].
Elle retourne la sous-chaine avec les caractères qui ont un indice m à n-1.

Voici la sous-chaine avec les indices 0, 1, et 2.

s[:3]
'Pyt'

Voici la sous-chaine avec les indices 2 et 3.

s[2:4]
'th'

Voici la sous-chaine avec les indices 3, 4 et 5.

s[3:]
'hon'

Un troisième paramètre peut donner l”incrément.
Voici la chaine avec les lettres 0, 2, et 4 (à cause de l’incrément 2).

s[::2]
'Pto'

Un incrément négatif (-1) inverse la chaine.

s[::-1]
'nohtyP'

Une chaine est immuable

Contrairement à une liste, une chaine est immuable.
Essayer de réaffecter une lettre, donne une erreur.

s[0] = 'J'
TypeError: 'str' object does not support item assignment

Par contre c’est possible de créer une nouvelle chaine.
Nous pouvons concaténer une lettre et une tranche d’une chaine existante, pour en former une nouvelle chaine.

'J' + s[1:]
'Jython'

Opérateur de concaténation

L’opérateur + permet de concaténer (enchaîner) deux textes.

a = 'hello'
b = 'world'

La concaténation donne

a + b
'helloworld'

Nous pouvons ajouter une espace au milieu.

a + ' ' + b
'hello world'

Nous pouvons ajouter un retour à la ligne (\n) au milieu.

print(a + '\n' + b)
hello
world

Opérateur de répétition

L’opérateur * permet de répéter un texte.

'hi' * 20
'hihihihihihihihihihihihihihihihihihihihi'
a * 5
'hellohellohellohellohello'

Maintenant, l’opérateur * signifie la multiplication

12 * 12
144

Nous pouvons utiliser des parenthèses pour fixer la priorité.

(a + ' ') * 5
'hello hello hello hello hello '

Caractère d’échappement

En informatique et en télécommunication, un caractère d’échappement est un caractère qui déclenche une interprétation alternative du ou des caractères qui le suivent. En Python nous avons la barre oblique inversée comme caractère d’échappement.

  • \n pour un retour à la ligne (=newline)

  • \t pour un tabulateur

  • \\ pour échapper le caractère d’échappement.

  • \' pour un guillemet simple

  • \" pour un guillemet double

Le tabulateur aligne un texte à des multiples de 8.

print('hello\tworld')
print('1\t2')
hello	world
1	2

Le \n (newline) insère un retour à la ligne.

print('hello\nworld')
hello
world

La première et la troisième barre oblique sont échappées.

print('tab=\\t \tnewline=\\n\n1\t2')
tab=\t 	newline=\n
1	2

Unicode

Les chaines de caractères utilisent Unicode. Le format Unicode permet de créer des caractères et alphabets de presque toutes les langues du monde.

Voici une chaine en japonais avec une sous-tranche.

jap = 'これは日本語です'  # kore wa nihongo desu
jap[3:6]               # nihongo
'日本語'

Voici une chaine qui utilise des émojis.

emoji = '🍏🍎🍐🍊🍋🍌🍉🍇🍓'

Voici deux émojis répétés 10 fois.

'🍎🍏' * 10
'🍎🍏🍎🍏🍎🍏🍎🍏🍎🍏🍎🍏🍎🍏🍎🍏🍎🍏🍎🍏'

Type d’un objet

La fonction type() retourne le type d’un objet.
Le type d’une chaine est str (=string).

type('abc')
str

Voici trois autres types:

  • int (entier)

  • float (virgule flottante

  • bool (booléen)

type(1), type(1.2), type(True)
(int, float, bool)

Conversion

Un nombre peut être présenté comme chaine.
L’opérateur * signifie alors la répétition.

'12' * 12
'121212121212121212121212'

Maintenant, l’opérateur * signifie la multiplication

12 * 12
144

La fonction int() transforme une chaine (qui représente un entier) en entier.

int('12')
12

L’opérateur inverse str() transforme un nombre en string.

str(123)
'123'