Maison  >  Article  >  développement back-end  >  Comment gérer ValueError lors de la division des lignes d’entrée pour les paires question-réponse ?

Comment gérer ValueError lors de la division des lignes d’entrée pour les paires question-réponse ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-15 01:23:02844parcourir

How to Handle ValueError When Splitting Input Lines for Question-Answer Pairs?

Diviser les lignes d'entrée pour les paires question-réponse

Lors de la division d'une ligne d'entrée en plusieurs variables, vous pouvez rencontrer une ValueError indiquant un besoin pour plus ou moins de valeurs à déballer. Ce problème survient lorsque la ligne en cours de fractionnement ne contient pas le caractère délimiteur utilisé dans la méthode split.

Plus précisément, dans le code fourni, chaque ligne du fichier d'entrée est divisée au niveau des deux points (:). Si une ligne ne contient pas de deux-points ou plusieurs deux-points, la méthode de fractionnement échouera.

Causes des erreurs de valeur

  • Trop peu de valeurs : Lorsque la ligne de saisie ne contient pas de deux-points, la méthode split renvoie une liste avec une seule chaîne vide. L'attribution de cette liste à plusieurs variables (par exemple, questions, réponses) génère une ValueError car il n'y a pas assez de valeurs à décompresser.
  • Trop de valeurs : Si une ligne contient plus d'un deux-points, la méthode split renvoie une liste avec plus d'éléments que prévu. Lors de l'attribution de cette liste à plusieurs variables, une ValueError est générée car il y a trop de valeurs à décompresser.

Solution

Pour résoudre ce problème, vous pouvez vérifiez si la ligne d'entrée contient le nombre attendu de valeurs avant de la diviser :

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)

Cette vérification garantit que la ligne contient deux points avant de tenter de la diviser. Si la ligne ne contient pas de deux-points, elle est ignorée, empêchant ainsi la génération de ValueError.

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!

Déclaration:
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