FAQ Python
FAQ PythonConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 14 juin 2021
- Où trouver de l'aide ?
- Comment extraire une sous-chaîne d'un string ?
- Comment remplacer une chaine de caractères par une autre ?
- Comment découper un string selon une chaine de caractères ?
- Comment supprimer une chaine de caractères en tête/fin d'un string ?
- Comment compter le nombre d'occurences d'une sous-chaine dans un string ?
- Comment renverser une chaîne de caractères ?
- Qu'est-ce qu'un raw string ?
- Pourquoi j'obtiens une erreur lorsque mon string contient le caractère \ (backslash) ?
- Comment gérer un compteur avec un nombre de chiffres constant ?
un grand nombre de fonctions sur les strings accessibles directement sur les chaines de caractères sans importation de nouveau module: string. Ainsi, vous pourrez trouver une explication complète (avec l'utilisation des paramètres optionels) aux différentes fonctions présentées par la suite.
Comme pour tous les objets de type séquence, vous pouvez extraire une sous-séquence par la forme x[start:end:step] où start
est l'index de départ, end l'index de fin non inclu et step le pas. start et end peuvent être négatifs. Dans ce cas-là, l'index est considéré comme relatif à la fin du string et
len(x)+start ou len(x)+end leur sont substitués. De plus si start est omis, il est considéré comme valant
0, si end est omis, il est considéré comme len(x). Si step est omis, il est traité comme valant 1.
Ainsi, pour récupérer les permiers caractères (les plus à gauche) d'un string, il suffit d'utiliser la syntaxe x[:nb] où nb représente
le nombre de caractères à récupérer.
Pour récupérer les derniers caractères (les plus à droite) d'un string, il suffit d'utiliser la syntaxe x[-nb:] où nb représente
le nombre de caractères à récupérer.
>>>
x =
"0123456789"
>>>
x[3
:5
]
'34'
>>>
x[::2
]
'02468'
>>>
x[1
::2
]
'13579'
>>>
x[:3
]
'012'
>>>
x[-
3
:]
'789'
s.replace(old, new, maxsplit=sys.maxint) renvoit une copie de s où les occurences de la sous-chaine old est remplacée par la sous-chaine new
>>>
'tapadaca'
.replace
(
'a'
,'i'
,2
)
'tipidaca'
s.split(sep=None, maxsplit=sys.maxint) renvoit une liste L de strings où chaque élément de L est un mot de s, où la chaîne sep sépare les mots. Si sep=None, les mots sont séparés par une suite quelconque d'espaces
>>>
'a = b'
.split
(
'='
)
['a '
,' b'
]
>>>
'a b c d'
.split
(
)
['a'
, 'b'
, 'c'
, 'd'
]
s.strip(x=None) renvoit une copie de s où la chaine x en début/fin de s est supprimé. si x=None, ce sont les espaces qui seront supprimés. lstrip et rstrip sont utilisées respectivement pour la suppresion à gauche et à droite
>>>
'aaaaabbbbbaaaaa'
.strip
(
'aaa'
)
'bbbbb'
>>>
' a '
.rstrip
(
)
' a'
s.count(sub, start=0, end=sys.maxint) renvoie le nombre d'occurences de la souschaine sub dans s[start:end]
>>>
'tapadaca'
.count
(
'a'
)
4
On peut utiliser les tranches de séquences de syntaxe s[i:j:k] qui retourne la sous-séquence de s
comprise entre le ième élément compris et le jème non compris de pas k
s[::-1] renvoie les éléments de s dans l'ordre inverse.
>>>
mystr=
'abcde'
>>>
mystr[::-
1
]
'edcba'
Un raw string est simplement une chaîne de caractères dont les séquences d'échappement avec le caractère \ (backslash ou antislash) ne sont pas interprétées. Cela est particulièrement utile avec les chaînes de caractères représentant les chemin d'accès à un fichier ou à un répertoire qui peuvent s'utiliser avec des / ou des \ et ainsi parfois entraîner des erreurs si vous oubliez de doubler les backslash. Les raw string sont aussi très utiles pour améliorer la lisibilité des expressions régulières friantes de backslash. Dans vos programmes, un raw string est simplement une chaîne de caractères précédée de la lettre r. Vous pouvez voir les caractères spéciaux dans le Python Reference Manual qui nécessiteront une attention particulière.
>>>
a =
"c:\python25
\t
cl
\r
eg1.1
\t
clreg11.dll"
>>>
a
'c:
\\
python25
\t
cl
\r
eg1.1
\t
clreg11.dll'
>>>
print
a
c:\python25 cl
eg1.1
clreg11.dll
>>>
a =
r"c:\python25\tcl\reg1.1\tclreg11.dll"
>>>
a
'c:
\\
python25
\\
tcl
\\
reg1.1
\\
tclreg11.dll'
>>>
print
a
c:\python25\tcl\reg1.1
\tclreg11.dll
Lien : Pourquoi j'obtiens une erreur lorsque mon string contient le caractère \ (backslash) ?
Le caractère \ (backslash) est en Python un caractère spécial qui peut donner un sens spécial au caractère le succédant.
Par exemple, '\t' est le caractère de tabulation. Vous trouverez la liste des caractères spéciaux dans le
Python Reference Manual.
Ainsi, lorsque vous travaillez avec des chaînes de caractères, si celle-ci contient un \, une erreur ou une mauvaise interprétation
de la chaîne peut apparaître, notamment lorsque vous manipulez sous windows des path de fichiers ou répertoires.
Si vous avez besoin du caractère \ dans une de vos chaînes, dédoublez-le (\\) ou bien utilisez
les raw string qui ne considèrent pas le caractère \ comme spécial.
Dans le cas de fichiers ou répertoires sous windows, on peut aussi utiliser le caractère / (slash) à la place qui est
reconnu de la même façon.
>>>
import
os
>>>
os.path.isdir
(
'c:\python24
\b
in'
)
False
>>>
os.path.isdir
(
'c:
\\
python24
\\
bin'
)
True
>>>
os.path.isdir
(
r'c:\python24\bin'
)
True
>>>
os.path.isdir
(
'c:/python24/bin'
)
True
Problèmatique: vous souhaitez gérer un compteur avec nombre de chiffres constants (donc en affichant des "0" à gauche des nombres ne possédant pas
assez de chiffres).
Pour cela, il vous suffit d'utiliser la fonction s.zfill( width) qui rajoute des caractères '0' devant
la chaînes de caractères jusqu'à ce que celle-ci ait une longueur égale à width. Si la chaînes de caractère a une longueur
inférieure à width, celle-ci est retournée telle quelle.
Vous pouvez également utiliser la fonction s.rjust( width[, fillchar]) qui permet d'ajuster une chaîne de caractères en
ajoutant à gauche le nombre de caractères fillchar nécessaires pour que la nouvelle chaîne de caractères est une longueur égale à width
for
i in
range(
1000
): print
str(
i).zfill
(
3
)
for
i in
range(
1000
): print
str(
i).rjust
(
3
, '0'
)
La fonction s.ljust( width[, fillchar]) permet d'ajuster une chaîne de caractères en ajoutant à droite le nombre de
caractères fillchar nécessaires pour que la nouvelle chaîne de caractères ait une longueur égale à width