Je partage ici ma méthode pour maîtriser le traitement des flux de données en Python, en m’appuyant sur des années de chantiers web et d’automatisation. Vous trouverez des recettes concrètes pour parser et sérialiser des fichiers JSON et XML, des astuces d’encodage, des exemples d’appels d’API, et des techniques pour transformer des structures imbriquées en objets exploitables. J’illustre chaque point avec des extraits de code testés en production, des conseils pour éviter les pièges courants, et des liens pratiques pour pousser l’apprentissage (stockage local, requêtes HTTP, et optimisation).
En bref :
- JSON : format léger, parfait pour échanges API et configuration.
- XML : utile quand on travaille avec des services legacy ou des balises riches.
- Utilisez toujours UTF-8 et ensure_ascii=False pour les données en français.
- Pour les APIs, privilégiez requests et la méthode .json() pour récupérer des objets Python.
- Pour interroger et transformer, pensez à JMESPath ou aux compréhensions de listes.
Réponse rapide : pour lire et écrire des données en Python, utilisez le module json avec json.load/json.dump pour les fichiers et json.loads/json.dumps pour les chaînes ; spécifiez encoding=’utf-8′ et ensure_ascii=False pour conserver les accents. Pour XML, la bibliothèque standard xml.etree.ElementTree suffit pour du parsing basique ; pour du traitement avancé préférez lxml. Ces outils couvrent 90% des cas pratiques.
Pourquoi maîtriser JSON et XML en Python : parsing, sérialisation et cas réels
Travailler chez plusieurs startups m’a appris que la majorité des intégrations passent par des échanges structurés : fichiers de configuration, réponses d’API, ou exports batch. En pratique, savoir parser un fichier et le sérialiser proprement évite des heures de debugging.
Le choix entre JSON et XML dépend souvent du partenaire : JSON pour les APIs modernes, XML pour des services SOAP ou des exports hérités. Ma règle : utiliser les bonnes bibliothèques pour réduire la dette technique.

Insight : bien configurer l’encodage et la sérialisation, c’est gagner du temps sur la maintenance.
Lire et écrire des fichiers JSON en Python : étapes et bonnes pratiques
Pour manipuler des fichiers JSON locaux, j’utilise systématiquement le module json. Voici mon flow : construire un dictionnaire Python, convertir en JSON lisible, puis écrire dans un fichier en UTF-8.
Exemple minimal pour créer et enregistrer des données :
import json
donnees = {« nom »: « Stéphane ROBERT », « age »: 29, « hobbies »: [« photo », »musique »]}
with open(‘donnees_utilisateur.json’, ‘w’, encoding=’utf-8′) as f:
json.dump(donnees, f, indent=4, ensure_ascii=False)
Notez l’importance de ensure_ascii=False pour garder les accents lisibles. Si vous travaillez avec des CSV ou Excel, combinez ces fichiers JSON avec des outils comme manipulation CSV ou OpenPyXL / pandas pour flux mixtes.
Insight : écrire des fichiers correctement encodés évite les corruptions lors d’échanges entre environnements.
Appels d’API et parsing de réponses JSON
Pour interroger une API, j’utilise la bibliothèque requests : simple, fiable et bien documentée. Exemple avec l’API factice JSONPlaceholder pour récupérer des utilisateurs :
import requests
r = requests.get(‘https://jsonplaceholder.typicode.com/users’)
if r.status_code == 200: utilisateurs = r.json()
Parcourez ensuite la liste comme un dictionnaire Python standard pour accéder aux clés et éléments imbriqués.
Pour approfondir la gestion des requêtes HTTP, voyez cet article pratique : Requêtes HTTP en Python. Si vous développez une API, le guide sur API REST avec Flask/FastAPI est un incontournable.

Insight : vérifier le code HTTP et utiliser r.json() réduit les erreurs de parsing.
Transformer et manipuler des données JSON : filtres, projections, et JMESPath
Une fois chargées, les données JSON deviennent des structures Python (listes et dictionnaires). Je combine compréhensions, filtres et parfois JMESPath pour interroger rapidement des objets imbriqués.
Exemple : filtrer les utilisateurs de moins de 30 ans
jeunes = [u for u in utilisateurs if u[‘age’] < 30]
Avec JMESPath l’expression est plus concise :
import jmespath
jeunes = jmespath.search(‘[?age < `30`]’, utilisateurs)
Pour du web scraping structuré (XML/HTML), combinez ces méthodes avec BeautifulSoup et requests pour nettoyer et convertir en JSON exploitable.
Insight : JMESPath accélère les extractions complexes sur JSON imbriqués.
Astuce pratique : gérer les valeurs manquantes et les erreurs
Utilisez la méthode get() pour éviter les KeyError et encapsulez les appels réseau dans try/except. Exemple :
ville = user.get(‘address’, {}).get(‘city’, ‘N/A’)
Pour vérifier la robustesse, je lance des tests unitaires et des mesures de performances avec des outils comme timeit ; un bon article de référence sur l’optimisation des scripts est disponible ici : Perf. et timeit.
Insight : anticiper les absences de clés rend vos parsers tolérants et fiables.
Travailler avec XML en Python : parsing d’éléments et manipulation de balises
Quand j’hérite d’un fichier XML, je commence par xml.etree.ElementTree pour le parsing. On peut lire des balises, accéder aux éléments et sérialiser en JSON si nécessaire.
Exemple de lecture :
import xml.etree.ElementTree as ET
tree = ET.parse(‘data.xml’)
root = tree.getroot()
for child in root.findall(‘item’):
titre = child.find(‘title’).text
print(titre)
Pour des flux XML volumineux ou des transformations XPath avancées, préférez lxml. Si vous transformez des exports XML en données tabulaires, combinez avec des routines d’écriture de fichiers via lire/écrire des fichiers.

Insight : XML reste pertinent pour des échanges complexes ; bien le parser évite des reconversions coûteuses.
Convertir XML en JSON (et l’inverse)
Je convertis souvent du XML en JSON pour homogénéiser mes pipelines. La méthode consiste à parcourir l’arbre, construire un dictionnaire puis sérialiser en JSON. Attention aux attributs et aux éléments répétitifs : normalisez-les en listes.
Si votre workflow inclut des fichiers compressés ou archives, pensez à automatiser l’extraction avec des outils comme ceux décrits ici : Zip/Tar en Python.
Insight : standardiser sur JSON en aval facilite l’intégration avec la plupart des services modernes.
Checklist et erreurs fréquentes à éviter
- Ne pas spécifier l’encodage : provoque les erreurs sur les accents ; toujours utiliser UTF-8.
- Confondre dump et dumps : l’un écrit dans un fichier, l’autre retourne une chaîne.
- Ignorer le status HTTP : toujours vérifier response.status_code avant .json().
- Mauvaise gestion des structures imbriquées : utiliser get(), vérifications et tests unitaires.
- Ne pas journaliser les erreurs : logs et exceptions aident à diagnostiquer en production.
Pour automatiser la génération de documents à partir de données JSON/XML, j’utilise parfois des bibliothèques dédiées décrites ici : générer des documents et PDF avec ReportLab.
Insight : une checklist simple réduit les interruptions en production.
Comment lire un fichier JSON en conservant les accents ?
Ouvrez le fichier avec encoding=’utf-8′ et utilisez json.load. Pour écrire, utilisez ensure_ascii=False afin que les caractères accentués restent lisibles.
Quand préférer XML à JSON ?
Choisissez XML si vous travaillez avec des services historiques, des schémas XSD ou des documents très structurés avec des attributs et des balises. JSON est préférable pour les APIs REST modernes.
Quelle bibliothèque utiliser pour envoyer des requêtes HTTP ?
La bibliothèque requests est stable et simple ; pour des besoins asynchrones regardez aiohttp. Consultez le guide pratique sur les requêtes HTTP pour des exemples.
Comment filtrer rapidement des objets JSON imbriqués ?
Utilisez des compréhensions de listes pour des filtres simples et JMESPath pour des requêtes plus expressives et concises sur des structures complexes.

