Python Chaînes de caractères

Les chaînes de caractères sont le type de données le plus couramment utilisé en Python. Nous pouvons créer des chaînes en utilisant des guillemets ('ou") pour créer des chaînes.

Créer une chaîne est simple : il suffit d'affecter une valeur à une variable. Par exemple :

var1 = 'Hello World!'
var2 = "Python Example"

Accès aux valeurs dans les chaînes en Python

Python ne prend pas en charge un type de caractère unique ; un caractère unique est également utilisé comme une chaîne en Python.

Pour accéder aux sous-chaînes en Python, vous pouvez utiliser des crochets pour découper les chaînes, comme dans l'exemple suivant :

Exemple (Python 2.0+)

#!/usr/bin/python var1 = 'Hello World!' var2 = "Exemple Python" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]

Le résultat d'exécution de l'exemple ci-dessus est :

var1[0]:  H
var2[1:5]:  ytho

Concaténation de chaînes en Python

Nous pouvons découper des chaînes de caractères et les concaténer avec d'autres chaînes, comme dans l'exemple suivant :

Exemple (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- var1 = 'Hello World!' print "Sortie :-", var1[:6] + 'Exemple !'

Le résultat de l'exécution de l'exemple ci-dessus

输出 :-  Hello Example!

Caractères d'échappement en Python

Lorsque vous devez utiliser des caractères spéciaux dans une chaîne de caractères, Python utilise un antislash (\caractères d'échappement. Le tableau ci-dessous :

Caractère d'échappementDescription
\(en fin de ligne) Continuation de ligne
\\ Symbole d'antislash
\' Guillemet simple
\" Guillemet double
\a Sonnerie
\b Retour arrière
\e Échap
\000 Vide
\n Nouvelle ligne
\v Tabulation verticale
\t Tabulation horizontale
\r Retour chariot
\f Saut de page
\oyy Nombre octal, y représente un caractère de 0~7, par exemple : \012 représente un retour à la ligne.
\xyy Nombre hexadécimal, commence par \x, yy représente le caractère, par exemple : \x0a représente un saut de ligne
\other Les autres caractères sont affichés au format normal

Opérateurs de chaînes Python

Dans le tableau ci-dessous, la variable d'instance a contient la chaîne "Hello", et la variable b contient "Python" :

OperatorDescriptionInstance
+Concaténation de chaînes
>>>a + b 'HelloPython'
*Répéter la chaîne de sortie
>>>a * 2 'HelloHello'
[]Obtenir un caractère dans une chaîne par index
>>>a[1] 'e'
[ : ]Découper une partie de la chaîne
>>>a[1:4] 'ell'
inOpérateur d'appartenance - Renvoie True si la chaîne contient le caractère donné
>>>"H" in a True
not in Opérateur d'appartenance - Renvoie True si la chaîne ne contient pas le caractère donné
>>>"M" not in a True
r/RChaîne brute - Chaîne brute : toutes les chaînes sont utilisées directement selon leur signification littérale, sans échapper les caractères spéciaux ou non imprimables. À l'exception de l'ajout de la lettre "r" (majuscule ou minuscule) avant le premier guillemet de la chaîne, les chaînes brutes ont presque exactement la même syntaxe que les chaînes ordinaires.
>>>print r'\n' \n >>> print R'\n' \n
%Formater une chaîneVoir la section suivante

Exemple (Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = "Bonjour" b = "Python" print "a + b affiche :", a + b print "a * 2 affiche :", a * 2 print "a", a[1] print "a[1:4] affiche :", a[1:4] if( "H" in a) : print "H est dans la variable a" else : print "H n'est pas dans la variable a" if( "M" not in a) : print "M n'est pas dans la variable a" else : print "M est dans la variable a" print r'\n' print R'\n'

Le résultat de l'exécution du programme ci-dessus est :

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

Formatage des chaînes en Python

Python prend en charge la sortie de chaînes formatées. Bien que cela puisse impliquer des expressions très complexes, l'utilisation la plus élémentaire consiste à insérer une valeur dans une chaîne avec le caractère de formatage de chaîne %s.

En Python, le formatage de chaînes utilise la même syntaxe que la fonction sprintf en C.

Voici un exemple :

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21) 

Le résultat de sortie de l'exemple ci-dessus est :

My name is Zara and weight is 21 kg!

Symboles de formatage des chaînes en Python :

Symbole Description
      %cFormater un caractère et son code ASCII
      %sFormater une chaîne
      %dFormater un entier
      %uFormater un entier non signé
      %oFormater un nombre octal non signé
      %xFormater un nombre hexadécimal non signé
      %XFormater un nombre hexadécimal non signé (majuscules)
      %fFormate un nombre à virgule flottante, permet de spécifier la précision après la virgule décimale
      %eFormate un nombre à virgule flottante en notation scientifique
      %EIdentique à %e, formate un nombre à virgule flottante en notation scientifique
      %gRaccourci pour %f et %e
      %GRaccourci pour %F et %E
      %pFormate l'adresse d'une variable à l'aide d'un nombre hexadécimal

Directives auxiliaires de l'opérateur de formatage :

SymboleFonction
*Définit la largeur ou la précision après la virgule
-Utilisé pour l'alignement à gauche
+Affiche un signe plus (+) devant les nombres positifs
<sp>Affiche un espace devant les nombres positifs
#Afficher '0' avant les nombres octaux, et '0x' ou '0X' avant les nombres hexadécimaux (selon que 'x' ou 'X' est utilisé)
0Compléter avec '0' devant les nombres affichés au lieu des espaces par défaut
%'%%' produit un seul '%'
(var)Variables de mappage (arguments de dictionnaire)
m.n.m est la largeur totale minimale affichée, n est le nombre de chiffres après la virgule décimale (si disponible)

À partir de Python 2.6, une nouvelle fonction de formatage de chaînes a été ajoutéestr.format(), ce qui améliore la capacité de formatage des chaînes.


Guillemets triples Python

En Python, les triples guillemets peuvent être utilisés pour affecter des chaînes complexes.

Les triples guillemets Python permettent à une chaîne de s'étendre sur plusieurs lignes. La chaîne peut contenir des retours à la ligne, des tabulations et d'autres caractères spéciaux.

La syntaxe des triples guillemets est une paire de guillemets simples ou doubles consécutifs (généralement utilisés par paires).

 >>> hi = '''hi 
there'''
>>> hi   # repr()
'hi\nthere'
>>> print hi  # str()
hi 
there  

Les triples guillemets libèrent les programmeurs du bourbier des guillemets et des chaînes spéciales, en gardant un petit bloc de chaîne dans le format dit WYSIWYG (What You See Is What You Get) du début à la fin.

Un cas d'utilisation typique est lorsque vous avez besoin d'un bloc de HTML ou de SQL ; à ce moment-là, vous devriez utiliser des triples guillemets pour le délimiter, car l'utilisation du système traditionnel de caractères d'échappement serait très fastidieuse.

 errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

Chaînes Unicode

En Python, définir une chaîne Unicode est aussi simple que de définir une chaîne ordinaire :

>>> u'Hello World !'
u'Hello World !'

Le "u" minuscule avant les guillemets indique qu'une chaîne Unicode est créée ici. Si vous voulez ajouter un caractère spécial, vous pouvez utiliser l'encodage Unicode-Escape de Python. Comme le montre l'exemple suivant :

>>> u'Hello\u0020World !'
u'Hello World !'

La notation \u0020 remplacée indique l'insertion du caractère Unicode avec la valeur d'encodage 0x0020 (espace) à la position donnée.


Fonctions de chaîne intégrées de Python

Les méthodes de chaîne ont été ajoutées progressivement de Python 1.6 à 2.0 — elles ont également été ajoutées à Jython.

Ces méthodes implémentent la plupart des méthodes du module string. Le tableau ci-dessous répertorie les méthodes de chaîne intégrées actuellement prises en charge. Toutes les méthodes incluent la prise en charge d'Unicode, et certaines sont même spécifiquement pour Unicode.

Méthode Description

string.capitalize()

Met en majuscule le premier caractère de la chaîne

string.center(width)

Retourne une nouvelle chaîne avec la chaîne d'origine centrée et complétée par des espaces jusqu'à la longueur width

string.count(str, beg=0, end=len(string))

Renvoie le nombre d'occurrences de str dans string ; si beg ou end est spécifié, renvoie le nombre d'occurrences de str dans la plage spécifiée

string.decode(encoding='UTF-8', errors='strict')

Décode string à l'aide de l'encodage spécifié par encoding ; si une erreur se produit, une exception ValueError est signalée par défaut, sauf si errors est spécifié comme 'ignore' ou 'replace'

string.encode(encoding='UTF-8', errors='strict')

Encode string à l'aide de l'encodage spécifié par encoding ; si une erreur se produit, une exception ValueError est signalée par défaut, sauf si errors est spécifié comme 'ignore' ou 'replace'

string.endswith(obj, beg=0, end=len(string))

Vérifie si la chaîne se termine par obj. Si beg ou end est spécifié, vérifie si elle se termine par obj dans la plage spécifiée. Si c'est le cas, renvoie True ; sinon renvoie False.

string.expandtabs(tabsize=8)

Convertit les symboles de tabulation dans la chaîne en espaces ; le nombre d'espaces par défaut pour un symbole de tabulation est 8.

string.find(str, beg=0, end=len(string))

Détecte si str est contenu dans string ; si beg et end spécifient une plage, vérifie s'il est contenu dans la plage spécifiée ; si c'est le cas, renvoie la valeur d'index de départ, sinon renvoie -1.

string.format()

Formater une chaîne

string.index(str, beg=0, end=len(string))

Identique à la méthode find(), sauf qu'elle lève une exception si str ne se trouve pas dans string.

string.isalnum()

Si la chaîne contient au moins un caractère et que tous les caractères sont des lettres ou des chiffres, alors renvoie

True, sinon renvoie False.

string.isalpha()

Si la chaîne contient au moins un caractère et que tous les caractères sont des lettres, renvoie True,

sinon renvoie False.

string.isdecimal()

Si la chaîne ne contient que des chiffres décimaux, renvoie True ; sinon renvoie False.

string.isdigit()

Si la chaîne ne contient que des chiffres, renvoie True ; sinon, renvoie False.

string.islower()

Si la chaîne contient au moins un caractère sensible à la casse et que tous ces caractères sensibles à la casse sont en minuscules, renvoie True ; sinon, renvoie False.

string.isnumeric()

Si la chaîne ne contient que des caractères numériques, renvoie True ; sinon, renvoie False.

string.isspace()

Si la chaîne ne contient que des caractères d'espacement, renvoie True ; sinon, renvoie False.

string.istitle()

Si la chaîne est en casse de titre (voir title()), renvoie True ; sinon, renvoie False.

string.isupper()

Si la chaîne contient au moins un caractère sensible à la casse et que tous ces caractères sensibles à la casse sont en majuscules, renvoie True ; sinon, renvoie False.

string.join(seq)

Avec string comme séparateur, joint tous les éléments (leurs représentations sous forme de chaîne) de seq en une nouvelle chaîne.

string.ljust(width)

Renvoie une nouvelle chaîne avec la chaîne d'origine alignée à gauche et complétée par des espaces jusqu'à la longueur width.

string.lower()

Convertit tous les caractères majuscules de string en minuscules.

string.lstrip()

Supprime les espaces de début de string.

string.maketrans(intab, outtab)

La méthode maketrans() est utilisée pour créer une table de traduction pour la correspondance des caractères. Pour la méthode d'appel la plus simple qui accepte deux paramètres, le premier paramètre est une chaîne représentant les caractères à convertir, et le second paramètre est également une chaîne représentant la cible de conversion.

max(str)

Renvoie lastrplus grande lettre de la chaîne.

min(str)

Renvoie la plus petite lettre de la chaînestr.

string.partition(str)

Un peu comme une combinaison de find() et split() ; à partir de la première position où str apparaît, découpe la chaîne en un tuple à 3 éléments (string_pre_str, str, string_post_str). Si str n'est pas contenu dans string, alors string_pre_str == string.

string.replace(str1, str2, num=string.count(str1))

Remplace str1 dans string par str2 ; si num est spécifié, remplace au plus num fois.

string.rfind(str, beg=0,end=len(string) )

Similaire à la fonction find() ; renvoie la position de la dernière occurrence de la chaîne, ou -1 s'il n'y a pas de correspondance.

string.rindex( str, beg=0,end=len(string))

Similaire à index(), mais renvoie l'index de la dernière sous-chaîne correspondante.

string.rjust(width)

Renvoie une nouvelle chaîne avec la chaîne d'origine alignée à droite et complétée par des espaces jusqu'à la longueur width.

string.rpartition(str)

Similaire à la fonction partition(), mais recherche depuis la droite.

string.rstrip()

Supprime les espaces de fin de string.

string.split(str="", num=string.count(str))

Avec str comme délimiteur, découpe string ; si num a une valeur spécifiée, ne découpe quenum+1sous-chaînes.

string.splitlines([keepends])

Découpe par lignes ('\r', '\r\n', '\n') et renvoie une liste contenant chaque ligne comme élément. Si l'argument keepends est False, les caractères de nouvelle ligne ne sont pas inclus ; si True, les caractères de nouvelle ligne sont conservés.

string.startswith(obj, beg=0,end=len(string))

Vérifie si la chaîne commence par obj ; si oui, renvoie True, sinon renvoie False. Si beg et end spécifient des valeurs, vérifie dans l'intervalle spécifié.

string.strip([obj])

Effectue lstrip() et rstrip() sur string.

string.swapcase()

Inverser la casse dans la chaîne.

string.title()

Renvoie une chaîne au format titre, ce qui signifie que tous les mots commencent par une lettre majuscule et que les lettres restantes sont en minuscules (voir istitle()).

string.translate(str, del="")

Convertit les caractères de la chaîne selon la table donnée par str (contenant 256 caractères),

placez les caractères à filtrer dans le paramètre del.

string.upper()

Convertit les lettres minuscules de la chaîne en majuscules.

string.zfill(width)

Renvoie une chaîne de longueur width, avec la chaîne d'origine alignée à droite et complétée par des zéros à gauche.

Autres extensions