"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como lidar com ValueErrors ao dividir linhas de entrada com `split ()`?

Como lidar com ValueErrors ao dividir linhas de entrada com `split ()`?

Publicado em 2024-11-24
Navegar:892

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

Dividindo linhas de entrada: tratando erros de valor

Ao dividir linhas de entrada usando a função split(), é crucial garantir que as linhas de entrada contenham o separadores esperados. Se uma linha não tiver o separador designado, como dois pontos (:), a função split() retornará um único valor ou uma exceção.

Compreendendo os ValueErrors

  • ValueError: precisa de mais de 1 valor para descompactar: Ocorre quando a função split() retorna apenas um valor, o que significa que não há separador no linha de entrada.
  • ValueError: muitos valores para descompactar (esperado 2): Por outro lado, este erro indica que a função split() retornou mais valores do que o esperado. Geralmente é causado por vários separadores na linha de entrada.

Causa de ValueErrors

Em seu código específico, os ValueErrors provavelmente surgem da última linha do arquivo de entrada, que pode conter apenas espaços vazios. Quando você executa string.strip() nesses espaços vazios, ele retorna uma string vazia, que quando dividida em dois pontos fornece uma string vazia. Isso deixa você com um único elemento, acionando o erro "é necessário mais de 1 valor para descompactar".

Solução

Para evitar esses ValueErrors, você pode implementar uma verificação para garantir que cada linha tenha o separador esperado. Aqui está uma versão modificada do seu código:

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)

Ao adicionar a instrução if que verifica o separador de dois pontos, você filtra as linhas que não o possuem e evita que a função split() gere ValueErrors.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3