Maison > développement back-end > Tutoriel Python > Comment gérer les ValueErrors lors du fractionnement des lignes d'entrée avec `split()` ?

Comment gérer les ValueErrors lors du fractionnement des lignes d'entrée avec `split()` ?

DDD
Libérer: 2024-11-29 22:30:13
original
676 Les gens l'ont consulté

How to Handle ValueErrors When Splitting Input Lines with `split()`?

Fractionnement des lignes d'entrée : gestion des erreurs de valeur

Lors du fractionnement des lignes d'entrée à l'aide de la fonction split(), il est crucial de s'assurer que les lignes d'entrée contiennent le séparateurs attendus. Si une ligne ne dispose pas du séparateur désigné, tel qu'un deux-points (:), la fonction split() renverra soit une valeur unique, soit une exception.

Comprendre les ValueErrors

  • ValueError : nécessite plus d'une valeur pour décompresser : Se produit lorsque la fonction split() n'en renvoie qu'une seule value, ce qui signifie qu'il n'y a pas de séparateur dans la ligne de saisie.
  • ValueError : trop de valeurs à décompresser (2 attendus) : à l'inverse, cette erreur indique que la fonction split() a renvoyé plus de valeurs que attendu. Cela est souvent dû à plusieurs séparateurs dans la ligne d'entrée.

Cause des ValueErrors

Dans votre code spécifique, les ValueErrors proviennent probablement de la dernière ligne du fichier d’entrée, qui peut contenir uniquement des espaces vides. Lorsque vous exécutez string.strip() sur ces espaces vides, il renvoie une chaîne vide qui, lorsqu'elle est divisée sur deux points, donne une chaîne vide. Cela vous laisse avec un seul élément, déclenchant l'erreur "besoin de plus d'une valeur pour décompresser".

Solution

Pour éviter ces ValueErrors, vous pouvez implémenter une vérification pour garantir que chaque ligne a le séparateur attendu. Voici une version modifiée de votre code :

questions_list = []
answers_list = []

with open('qanda.txt', 'r') as questions_file:
    for line in questions_file:
        line = line.strip()
        if ':' in line:
            questions, answers = line.split(':')
            questions_list.append(questions)
            answers_list.append(answers)
Copier après la connexion

En ajoutant l'instruction if qui vérifie le séparateur deux-points, vous filtrez les lignes qui en manquent et empêchez la fonction split() de générer des ValueErrors.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal