'NoneType' object has no attribute 'split'

Python Erreur courante

Explication

L'erreur `AttributeError: 'NoneType' object has no attribute 'split'` (ou `.strip`, `.append`, `.get`...) signifie que vous appelez une **méthode** sur une variable qui vaut `None`. Comme `None` ne possède pas cette méthode, Python lève une `AttributeError`. Presque toujours, le problème n'est pas la méthode mais le **`None` inattendu** : la variable n'a pas la valeur que vous croyez. ```python ligne = config.get("nom") # la clé "nom" est absente → None prenom = ligne.split(" ")[0] # AttributeError: 'NoneType' object has no attribute 'split' ```

Causes courantes

- **`dict.get(cle)`** sur une clé absente renvoie `None`, puis vous appelez une méthode dessus. - **Une fonction sans `return`** dont vous utilisez le résultat. - **`re.match()` / `re.search()`** renvoient `None` quand il n'y a pas de correspondance, puis `.group()`. - **Une méthode en place** : `nom = liste.append(x)` met `nom` à `None`. - **Une variable d'environnement absente** : `os.environ.get("VAR")` → `None`.

1. Vérifiez la valeur avant d'appeler la méthode

ligne = config.get("nom")
if ligne is not None:
    prenom = ligne.split(" ")[0]
else:
    prenom = "Inconnu"

2. Fournissez une valeur par défaut

ligne = config.get("nom", "")   # "" au lieu de None
prenom = ligne.split(" ")[0]      # ne plante plus

3. Cas des expressions régulières

import re
m = re.search(r"(\d{4})", texte)
if m:                       # ne pas faire m.group(1) directement
    annee = m.group(1)

4. En production : remontez à la source du None

Plutôt que de multiplier les if x is not None, corrigez l'endroit qui produit le None (clé manquante, requête vide). Le message d'erreur indique l'attribut (split) : repérez quelle variable devait être une chaîne et ne l'est pas.

Comment prevenir cette erreur

- **`.get(cle, defaut)`** avec une valeur par défaut pour les dictionnaires. - **Annotez en `Optional[str]`** ce qui peut être `None`, et laissez `mypy` repérer les accès non protégés. - **Validez la configuration** au démarrage (clés requises présentes) plutôt qu'au moment de l'usage. - Référence : [docs.python.org — AttributeError](https://docs.python.org/fr/3/library/exceptions.html#AttributeError).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Comment savoir quelle variable vaut `None` ?
L'erreur cite l'attribut appelé (`split`, `strip`...). Cherchez l'expression `.split` dans la ligne fautive : la variable juste avant le point est celle qui vaut `None`. Ajoutez un `print(repr(variable))` juste avant pour confirmer.
Pourquoi `os.environ.get("VAR")` peut-il provoquer cette erreur ?
Parce que `.get()` renvoie `None` si la variable d'environnement n'existe pas. Utilisez `os.environ.get("VAR", "valeur_par_defaut")` ou `os.environ["VAR"]` (qui lève une `KeyError` explicite si absente).

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.