miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-12-29 02:50:22 +01:00
221 lignes
9,7 Kio
HTML
221 lignes
9,7 Kio
HTML
<!--
|
||
title: Python - Manipulation des données
|
||
description:
|
||
published: true
|
||
date: 2021-11-05T14:32:34.355Z
|
||
tags:
|
||
editor: ckeditor
|
||
dateCreated: 2021-06-07T08:01:47.026Z
|
||
-->
|
||
|
||
<figure class="image image_resized" style="width:53.94%;"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Python_logo_and_wordmark.svg/1200px-Python_logo_and_wordmark.svg.png" alt="Fichier:Python logo and wordmark.svg — Wikipédia"></figure>
|
||
<h1>Les listes</h1>
|
||
<p>Une liste se déclare avec des crochets et on accède à une donnée par son indice.</p>
|
||
<pre><code class="language-python">>>> langages = ["python", "C#","java","C++"]
|
||
|
||
>>> print(langages[1])
|
||
C#</code></pre>
|
||
<h2>Les actions possibles sur une liste</h2>
|
||
<p>list.<strong>append(val) → </strong>Ajoute la valeur à la fin de la liste</p>
|
||
<p>list.<strong>insert(index, val) → </strong>Ajoute la valeur à l'index indiqué</p>
|
||
<p>list.<strong>extend(liste) → </strong>Ajoute les éléments d'une liste à la liste</p>
|
||
<p>list.<strong>remove(val) → </strong>Supprime le premier élément de la liste égal à <i>val</i>. Si l'élément n'existe pas, une exception <i>ValueError</i> est levée</p>
|
||
<p>list.<strong>clear(val) → </strong>Supprime tous les éléments de la liste</p>
|
||
<p>list.<strong>pop(index </strong><i>(optionnel)</i><strong>) → </strong>Supprime l'élément à l'index indiqué. Sans indication, supprime le dernier élément.</p>
|
||
<p>list.<strong>index(val) → </strong> Renvoi l'index correspondant à la valeur donnée</p>
|
||
<p>list.<strong>count(val) → </strong>Renvoi le nombre d'éléments correspondants à <i>val</i></p>
|
||
<p>list.<strong>sort() → </strong>Trie la liste</p>
|
||
<p>list.<strong>reverse() → </strong>Inverse l'ordre des éléments de la liste</p>
|
||
<h2>Parcourir une liste</h2>
|
||
<p>Pour parcourir une liste il suffit d'écrire une boucle <i><strong>for</strong> var <strong>in</strong> list </i>:</p>
|
||
<pre><code class="language-python">>>> langages = ["python", "C#","java","C++"]
|
||
|
||
>>> for prog in langages:
|
||
>>> print(prog, "est cool")
|
||
|
||
python est cool
|
||
C# est cool
|
||
java est cool
|
||
C++ est cool</code></pre>
|
||
<h1>Les tuples</h1>
|
||
<p>Les tuples ressemblent à des listes mais ne sont pas modifiables après leur création. Ils sont définis avec des parenthèses :</p>
|
||
<pre><code class="language-python">>>> tup = (1,2,3)
|
||
>>> tup
|
||
(1, 2, 3)</code></pre>
|
||
<p>Comme pour les listes, on peut accéder à un élément par son indice :</p>
|
||
<pre><code class="language-python">>>> tup[1]
|
||
2</code></pre>
|
||
<p>Les tuples servent principalement à attribuer plusieurs valeurs :</p>
|
||
<pre><code class="language-python">####EXEMPLE 1#######
|
||
>>> tup = (1,2,3)
|
||
>>> a,b,c = tup
|
||
>>> a
|
||
1
|
||
>>> b
|
||
2
|
||
>>> c
|
||
3
|
||
|
||
####EXEMPLE 2#######
|
||
>>> a, b = 1, 2 #dans ce cas, les parenthèses ne sont pas obligatoires
|
||
>>> a
|
||
1
|
||
>>> b
|
||
2
|
||
|
||
####EXEMPLE 3#######
|
||
def example():
|
||
return 1,2 #ceci est un tuple
|
||
|
||
tup = example()
|
||
a, b = example()
|
||
|
||
>>> tup
|
||
(1, 2)
|
||
>>> a
|
||
1
|
||
>>> b
|
||
2</code></pre>
|
||
<h1>Les dictionnaires (+ json)</h1>
|
||
<h2>Créer un dictionnaire</h2>
|
||
<p>Les dictionnaires permettent eux aussi de rassembler des éléments mais sont identifiés par une <strong>clé</strong> au lieu d'un indice, et vont permettre de traiter beaucoup plus d'informations qu'une liste. Un dictionnaire se déclare avec des accolades.</p>
|
||
<pre><code class="language-python">dictio = {"title": "Modèles de voitures", "SUV": ["CX-5","C-HR","Duster"], "4x4": ["Q5","Tucson","Macan"]}</code></pre>
|
||
<p> </p>
|
||
<blockquote>
|
||
<p><strong>Note : </strong>Les éléments entre crochets sont des listes. Il est possible de déclarer des listes dans un dictionnaire, et même des dictionnaires dans un dictionnaire, un dictionnaire dans une liste, ...</p>
|
||
</blockquote>
|
||
<p>Dans cet exemple nous avons trois clés : “title”, “SUV” et “4x4”.</p>
|
||
<p>Pour ajouter un élément au dictionnaire, on attribue une clé entre crochets puis une valeur.</p>
|
||
<pre><code class="language-python">>>> dictio["citadine"] = "C3"
|
||
>>> print(dictio)
|
||
{'title': 'Modèles de voitures', 'SUV': ['CX-5', 'C-HR', 'Duster'], '4x4': ['Q5', 'Tucson', 'Macan'], 'citadine': 'C3'}</code></pre>
|
||
<h2>Lire un dictionnaire</h2>
|
||
<p>Pour connaître le titre nous appelons le dictionnaire avec la clé entre crochets :</p>
|
||
<pre><code class="language-python">>>> dictio["title"]
|
||
'Modèles de voitures'</code></pre>
|
||
<p>Pour accéder à une valeur d'une liste, il suffit d'indiquer l'indice en fonction de la clé :</p>
|
||
<pre><code class="language-python">>>> dictio["SUV"][1]
|
||
'C-HR'</code></pre>
|
||
<p>Pour parcourir l'ensemble du dictionnaire on utilise la méthode items().</p>
|
||
<pre><code class="language-python">for cars in dictio.items():
|
||
print(cars)
|
||
|
||
('title', 'Modèles de voitures')
|
||
('SUV', ['CX-5', 'C-HR', 'Duster'])
|
||
('4x4', ['Q5', 'Tucson', 'Macan'])
|
||
('citadine', 'C3')</code></pre>
|
||
<p>On reconnait ici une forme de tuple ! On peut donc aussi attribuer 2 variables à la place de cars pour dissocier la clé et la valeur :</p>
|
||
<pre><code class="language-python">for car_type, models in dictio.items():
|
||
if car_type != "title": #Pour exclure l'élément "title"
|
||
print("Modeles de ",car_type," : ",models)
|
||
|
||
Modeles de SUV : ['CX-5', 'C-HR', 'Duster']
|
||
Modeles de 4x4 : ['Q5', 'Tucson', 'Macan']
|
||
Modeles de citadine : C3</code></pre>
|
||
<p> </p>
|
||
<h2>Importer un fichier json en un dictionnaire exploitable</h2>
|
||
<p>Le format json n'est rien d'autre qu'un dictionnaire. Pour lire un fichier json il suffira alors de le charger et nous obtiendrons le même dictionnaire que nous avions créé.</p>
|
||
<p><i>Contenu du fichier “voitures.json” :</i></p>
|
||
<pre><code class="language-plaintext">{
|
||
"title": "Modeles de voitures",
|
||
"SUV":
|
||
[
|
||
"CX-5","C-HR","Duster"
|
||
],
|
||
"4x4":
|
||
[
|
||
"Q5","Tucson","Macan"
|
||
]
|
||
}</code></pre>
|
||
<p>On importe ce fichier et le convertit en dictionnaire :</p>
|
||
<pre><code class="language-python">import json
|
||
|
||
with open('voitures.json') as file: #Fonctionne pour tout type de fichier.
|
||
data = json.load(file) #On attribue le contenu du fichier au dictionnaire "data"
|
||
|
||
>>> data
|
||
{'title': 'Modeles de voitures', 'SUV': ['CX-5', 'C-HR', 'Duster'], '4x4': ['Q5', 'Tucson', 'Macan']}</code></pre>
|
||
<h1>Manipuler un fichier</h1>
|
||
<h2>Ouvrir un fichier</h2>
|
||
<p>Options d'ouvertures de fichiers :</p>
|
||
<figure class="table">
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<td>‘r’</td>
|
||
<td>Ouvre en lecture seule</td>
|
||
</tr>
|
||
<tr>
|
||
<td>‘w’</td>
|
||
<td>Ouvre en écriture, en effaçant le contenu du fichier</td>
|
||
</tr>
|
||
<tr>
|
||
<td>‘x’</td>
|
||
<td>Ouvre en création exclusive. Échoue si le fichier existe déjà</td>
|
||
</tr>
|
||
<tr>
|
||
<td>‘a’</td>
|
||
<td>Ouvre en écriture, en ajoutant le contenu à la fin (append)</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure>
|
||
<p>Pour ouvrir un fichier on utilise la méthode “open” et on spécifie l'option souhaitée.</p>
|
||
<pre><code class="language-python">file = open('test.txt','r')
|
||
|
||
[...]
|
||
|
||
file.close()</code></pre>
|
||
<p>Avec cette méthode il est nécessaire de fermer le fichier avec <i>close()</i>. En cas de problème pendant l’exécution du code, les modifications ne seront pas prises en compte et le fichier ne sera plus utilisable par la suite du script. </p>
|
||
<p>Une méthode plus fiable, plus sécurisée sera donc d'utiliser <i>open() </i>avec <i>with. </i>Le fichier sera automatiquement fermé.</p>
|
||
<pre><code class="language-python">with open('test.txt','r') as file:
|
||
[...]</code></pre>
|
||
<p> </p>
|
||
<blockquote>
|
||
<p><i><strong>Attention : </strong>On voit les deux points à la fin de la ligne. Cela implique donc d'<strong>indenter</strong> les lignes suivantes.</i></p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p><strong>Info : </strong>Pour donner le chemin vers le fichier il faut des “ / “ et non des ” \ ". Ex : C:/mon<i>dossier/mon</i>fichier</p>
|
||
</blockquote>
|
||
<h2>Manipuler un texte</h2>
|
||
<p>Pour lire un fichier texte, on l'ouvre bien entendu avec l'option ‘r’, puis on peut :</p>
|
||
<h3>1 - Lire le fichier en entier avec <i>read()</i></h3>
|
||
<pre><code class="language-python">with open('test.txt','r') as file:
|
||
print(file.read())
|
||
|
||
ligne 1
|
||
ligne 2
|
||
ligne 3</code></pre>
|
||
<h3>2 - Lire le fichier ligne par ligne avec <i>readline()</i></h3>
|
||
<p>Le premier <i>readline()</i> lira la première ligne, le deuxième la deuxième ligne, etc…</p>
|
||
<pre><code class="language-python">with open('test.txt','r') as file:
|
||
print(file.readline())
|
||
print(file.readline())
|
||
|
||
ligne 1
|
||
ligne 2</code></pre>
|
||
<p>Avec cette méthode, il faut répéter <i>readline() </i>autant de fois qu'il y a de lignes. La méthode la plus efficace sera d'utiliser une boucle <i>for : </i></p>
|
||
<pre><code class="language-python">with open('test.txt','r') as file:
|
||
for ligne in file:
|
||
print(ligne)
|
||
|
||
ligne 1
|
||
ligne 2
|
||
ligne 3</code></pre>
|
||
<h3>3 - Mettre toute les lignes dans une liste avec <i>readlines()</i></h3>
|
||
<pre><code class="language-python">with open('test.txt','r') as file:
|
||
print(file.readlines())
|
||
|
||
['banane\n', 'fraise\n', 'chocolat'] #Les \n indiquent des retours à la ligne</code></pre>
|
||
<p>Sinon pour avoir la liste sans le \n, on peut utiliser read().splitlines() :</p>
|
||
<pre><code class="language-python">with open('test.txt','r') as file:
|
||
print(file.read().splitlines())
|
||
|
||
['banane', 'fraise', 'chocolat'] #Les \n indiquent des retours à la ligne</code></pre>
|
||
<p>Enfin, pour écrire dans un fichier texte, on utilise <i>write().</i></p>
|
||
<pre><code class="language-python">with open('test.txt','a') as file:
|
||
file.write("\nligne 4")</code></pre>
|
||
<h2>Manipuler un CSV</h2>
|
||
<p> </p>
|
||
<h1>Formater des chaines de caractères</h1>
|
||
<p> </p>
|