Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
python:bases:chaines [2021/08/11 09:19] – modification externe 127.0.0.1 | python:bases:chaines [2022/10/10 08:05] (Version actuelle) – phil |
---|
[[:python:accueilpython|{{ :iconemaison.jpg?nolink&30|Sommaire Python et microPython}}]] | [[:python:accueilpython|{{ :iconemaison.jpg?nolink&30|Sommaire Python et microPython}}]] |
| |
===== Les séquences : chaînes de caractères ===== | ===== Python - Chaînes de caractères ===== |
| |
[Mise à jour le : 2/8/2021] | [Mise à jour le : 10/10/2022] |
{{ :micropython:python.png?nolink&80|}} | |
| |
* **Sources** | * **Sources** |
* ** Mots-clés** : collection, séquence, indexation, insertion, concaténation, formatage, accès, parcours, sélection. | * ** Mots-clés** : collection, séquence, indexation, insertion, concaténation, formatage, accès, parcours, sélection. |
| |
<note important>Les mots ci-dessous sont dits "réservés". Ils ne peuvent pas être utilisés comme nom de variable. Les mots __soulignés__ sont une nouveauté de Python 3. Les mots en **gras** sont utilisés dans cette page.</note> | <callout type="warning" icon="true">Les mots ci-dessous sont dits "réservés". Ils ne peuvent pas être utilisés comme nom de variable. Les mots __soulignés__ sont une nouveauté de Python 3. Les mots en **gras** sont utilisés dans cette page.</callout> |
| |
| and | continue | finally | is | raise | | | and | continue | finally | is | raise | |
| |
==== 1. Introduction ==== | ==== 1. Introduction ==== |
> En programmation, le texte s'appelle chaîne de caractères. Pour créer une chaîne de caractères, il faut encadrer le texte de guillemets **" "** ou d'apostrophes **' '**. Une chaîne de caractères est une **__séquence__**, ce qui signifie que c'est une **collection ordonnée** de valeurs. Le premier élément de la chaîne est **indexé** par **0**. Les chaînes de caractères sont des instances de la classe **str**. | En programmation, le texte s'appelle chaîne de caractères. Pour créer une chaîne de caractères, il faut encadrer le texte de guillemets **" "** ou d'apostrophes **' '**. Une chaîne de caractères est une **__séquence__**, ce qui signifie que c'est une **collection ordonnée** de valeurs. Le premier élément de la chaîne est **indexé** par **0**. Les chaînes de caractères sont des instances de la classe **str**. |
| |
<note Important>En Python une chaîne de caractères est **immuable** (ou **non mutable**) c'est-à-dire q'elle ne peut être modifiée après sa création. \\ Toutes les **méthodes** de manipulation des chaînes **renvoient** une **chaîne de caractères**. \\ \\ Il faut encadrer le texte de **guillemets** simples **' '** ou doubles **" "**.</note> | <callout type="warning" icon="true">En Python une chaîne de caractères est **immuable** (ou **non mutable**) c'est-à-dire q'elle ne peut être modifiée après sa création. \\ Toutes les **méthodes** de manipulation des chaînes **renvoient** une **chaîne de caractères**. \\ \\ Il faut encadrer le texte de **guillemets** simples **' '** ou doubles **" "**.</callout> |
| |
//Exemple// | //Exemple// |
</code> | </code> |
| |
<note tip> La liste des méthodes peut être obtenue dans l'interpréteur python avec **dir(str)** et une aide sur une méthode avec **help(str**.//méthode//**)**.</note> | <callout type="tip" icon="true">La liste des méthodes peut être obtenue dans l'interpréteur python avec **dir(str)** et une aide sur une méthode avec **help(str**.//méthode//**)**.</callout> |
| |
//Exemple// | //Exemple// |
</code> | </code> |
| |
<note tip>Par défaut l'instruction **print** provoque un retour à la ligne après l'affichage. On peut changer ce comportement en fournissant une autre chaîne de caractère à accoler à l'affichage comme ci-dessus ou même rien.</note> | <callout type="tip" icon="true">Par défaut l'instruction **print** provoque un retour à la ligne après l'affichage. On peut changer ce comportement en fournissant une autre chaîne de caractère à accoler à l'affichage comme ci-dessus ou même rien.</callout> |
| |
// Exemple // | // Exemple // |
* Source : <html><ahref="https://he-arc.github.io/livre-python/fstrings/index.html" target="blank">Bibliothèques Python</a></html> | * Source : <html><ahref="https://he-arc.github.io/livre-python/fstrings/index.html" target="blank">Bibliothèques Python</a></html> |
| |
<note tip>L'utilisation de **f-strings** permet d’insérer des expressions dans des chaines de caractères en utilisant une syntaxe minimale.</note> | <callout type="tip" icon="true">L'utilisation de **f-strings** permet d’insérer des expressions dans des chaines de caractères en utilisant une syntaxe minimale.</callout> |
| |
//Exemple// | //Exemple// |
<code python *.py> | <code python *.py> |
| monscore = 1000 |
f"Vous avez obtenu {monscore} points" # Résultat : Vous avez obtenu 1000 points | f"Vous avez obtenu {monscore} points" # Résultat : Vous avez obtenu 1000 points |
</code> | </code> |
| |
<note>Pour **associer** des chaînes (**concaténation**) on utilise l'opérateur **+**.</note> | <callout type="primary" icon="true">Pour **associer** des chaînes (**concaténation**) on utilise l'opérateur **+**.</callout> |
| |
//Exemple// | //Exemple// |
| |
* **Avant python 3.6** | * **Avant python 3.6** |
<note>Pour **insérer des valeurs** dans une chaîne on utilise **%s** à l'emplacement retenu, la méthode **format** ou des **virgules**.</note> | <callout type="primary" icon="true">Pour **insérer des valeurs** dans une chaîne on utilise **%s** à l'emplacement retenu, la méthode **format** ou des **virgules**.</callout> |
| |
//Exemple// | //Exemple// |
| |
==== 4. Longueur d'une chaîne, parcours et sélection (slice) ==== | ==== 4. Longueur d'une chaîne, parcours et sélection (slice) ==== |
Une chaîne de caractères est une séquence constituée de chaînes de caractères constituées d'un seul caractère. | * **Ressource** |
| * <html><a href="https://codesolid.com/python-indexing-slicing-exercises/" target="_blank">Python Indexing and Slicing: Complete Tutorial With Hands-On Exercises</a></html> |
| |
| <callout type="primary" icon="true">Une chaîne de caractères est une séquence constituée de chaînes de caractères constituées d'un seul caractère.</callout> |
| |
* **Longueur d'une chaîne** | * **Longueur d'une chaîne** |
<note important>La longueur d'une chaîne (son **nombre d'éléments**) est déterminée avec la fonction built-in **len**(). | <callout type="primary" icon="true">La longueur d'une chaîne (son **nombre d'éléments**) est déterminée avec la fonction built-in **len**(). |
| |
Exemple : **len**("Le jour le plus long") # renvoie 20</note> | Exemple : **len**("Le jour le plus long") # renvoie 20</callout> |
| |
* **Accès** aux caractères d'une chaîne | * **Accès** aux caractères d'une chaîne |
| |
<note important>Pour accéder à un caractère dans une chaîne, on précise son indice entre crochets **[**//indice//**]**. \\ **L'indice du premier caractère est 0**.</note> | <callout type="warning" icon="true">Pour accéder à un caractère dans une chaîne, on précise son indice entre crochets **[**//indice//**]**. \\ **L'indice du premier caractère est 0**.</callout> |
| |
//Exemple// | //Exemple// |
La sélection consiste à extraire une partie de la chaîne (//slicing//). Pour sélectionner une partie d'une chaîne, on précise la valeur du premier et du dernier indice entre crochet et éventuellement un pas. | La sélection consiste à extraire une partie de la chaîne (//slicing//). Pour sélectionner une partie d'une chaîne, on précise la valeur du premier et du dernier indice entre crochet et éventuellement un pas. |
| |
<note>//Chaine//**[**//début// **:** //fin// **:** //pas//**]**</note> | <callout type="primary" icon="true">//Chaine//**[**//début// **:** //fin// **:** //pas//**]**</callout> |
{{ :python:poo:composites:brackets.png?nolink&300 |}} | {{ :python:poo:composites:brackets.png?nolink&300 |}} |
| |
<note important>L'élément du **dernier indice** est **exclu**.</note> | <callout type="warning" icon="true">L'élément du **dernier indice** est **exclu**.</callout> |
| |
// Exemple// | // Exemple// |
* Les expressions régulières dans la <html><a href="https://docs.python.org/3/library/re.html#regular-expression-syntax" target="_blank">documentation Python</a></html> - Outil <html><a href="https://pythex.org/" target="_blank">pythex</a></html> | * Les expressions régulières dans la <html><a href="https://docs.python.org/3/library/re.html#regular-expression-syntax" target="_blank">documentation Python</a></html> - Outil <html><a href="https://pythex.org/" target="_blank">pythex</a></html> |
* <html><a href="https://realpython.com/python-string-split-concatenate-join/" target="_blank">Splitting, Concatenating, and Joining Strings in Python</a></html> | * <html><a href="https://realpython.com/python-string-split-concatenate-join/" target="_blank">Splitting, Concatenating, and Joining Strings in Python</a></html> |
| * <html><a href="https://bas.codes/posts/python-slicing" target="_blank">A Comprehensive Guide to Slicing in Python</a></html> |
| * <html><a href="https://realpython.com/replace-string-python/" target="_blank">How to Replace a String in Python</a></html> |
| * <html><a href="https://realpython.com/python-string-contains-substring/" target="_blank">How to Check if a Python String Contains a Substring</a></html> |
| * <html><a href="https://realpython.com/inherit-python-str/" target="_blank">Custom Python Strings: Inheriting From str vs UserString</a></html> |