2.4. Chaînes de caractères#

Une chaîne de caractères est une séquence de caractères Unicode écrite entre guillemets. Les guillemets simples et doubles sont équivalents – choisissez le style qui vous évite d’avoir à échapper les guillemets présents à l’intérieur du texte :

name    = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\""        # both styles can be used
same    = 'She said "hi"'

Les chaînes entre triples guillemets ("""...""" ou '''...''') s’étendent sur plusieurs lignes et conservent les sauts de ligne tels quels :

banner = """boot ok
firmware v1.28
"""
print(banner)

Sortie

boot ok
firmware v1.28

2.4.1. Séquences d’échappement#

À l’intérieur d’une chaîne ordinaire, \ introduit un caractère spécial :

  • \n – saut de ligne

  • \t – tabulation

  • \\ – une barre oblique inverse littérale

  • \' / \" – un guillemet littéral (lorsqu’il terminerait sinon la chaîne)

  • \xHH – le caractère dont le code hexadécimal est HH

  • \uHHHH – le point de code Unicode HHHH

Lorsqu’une chaîne contient de nombreuses barres obliques inverses, préfixez la chaîne littérale avec r pour en faire une chaîne brute (raw). Les barres obliques inverses sont alors prises au pied de la lettre – \n reste deux caractères au lieu d’être remplacé par un saut de ligne :

win_path = r"C:\Users\OpenMV\camera.py"
literal  = r"\n is two characters, not a newline"

2.4.2. Concaténation et répétition#

Deux chaînes se joignent avec + ; une chaîne se répète avec * :

greeting = "Hello, " + name + "!"
line     = "-" * 40              # 40-character separator

L’utilisation répétée de + dans une boucle alloue une nouvelle chaîne à chaque itération. Pour construire de plus grandes chaînes à partir de nombreux morceaux, utilisez str.join().

2.4.3. Longueur, indexation et découpage#

len() renvoie le nombre de caractères d’une chaîne. L’indexation avec [] renvoie une chaîne d’un caractère à la position donnée ; les indices négatifs comptent à partir de la fin :

>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'

Une tranche s[start:stop] renvoie la sous-chaîne allant de la position start jusqu’à stop exclu. Chacune des deux bornes peut être omise pour signifier « le début » ou « la fin », et une troisième valeur optionnelle s[start:stop:step] vous permet de sauter des caractères.

The string "OpenMV" with position markers between each character, illustrating how a slice selects the characters between two positions.

Les positions des tranches se situent entre les caractères. s[2:5] sélectionne les caractères aux positions 2, 3 et 4.#

>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO'                     # whole string, reversed

Une tranche hors limites renvoie silencieusement la portion qui existe – s[100:200] est la chaîne vide "", et non une erreur. L’indexation hors limites, en revanche, lève IndexError.

2.4.4. Immuabilité#

Les chaînes ne peuvent pas être modifiées sur place. Les opérations qui semblent muter une chaîne renvoient en réalité une nouvelle chaîne et laissent l’originale inchangée :

>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV'                     # unchanged

Pour « changer » une chaîne, réassociez le nom à la nouvelle valeur : name = name.upper().