Ошибка значения: подстрока не найдена, почему?

#python

#python

Вопрос:

The my_data.txt файл выглядит следующим образом:

 jim@gmail.com: hello123  
tim@gmail.com: hello1234
 

Программа фактически извлекает адрес электронной почты и пароль из my_data.txt файл действительно разумный, по крайней мере, для базового программиста. Но каждый раз, когда я запускаю его, он кричит ValueError: substring not found , даже если я попробовал оба строковых метода: .index() и .find() .

 file = open('my_data.txt', 'r')
for line in file.readlines():
        break_line = line.index(':') # OR: break_line = line.find(':')
        email = line[:break_line]
        password = line[(break_line   2):len(line)]
        print(line.find(':'))
 

Ответ №1:

Я ожидаю, что у вас есть пустые строки в вашем текстовом файле. Попробуйте пропустить пустые строки и строки, которые не содержат «:» в начале:

 for line in file.readlines():
    if not line.strip():
        continue
    if ":" not in line:
        continue
    break_line = line.index(':')  # OR: break_line = line.find(':')
    email = line[:break_line]
    password = line[(break_line   2):len(line)]
    print(line.find(':'))
 

Комментарии:

1. Я пока не изменял другую часть цикла for. Я бы предложил использовать line.split(":") , хотя…

Ответ №2:

Может быть, вы можете попробовать этот код:

 for line in file.readlines():
    if line.strip():  # meaning there is a valid line
        print(line)
    
        break_line = line.split(':')  #index(':') # OR: break_line = line.find(':')
        email = break_line[0]
        print(email)
    
        password = break_line[1]
        print(password)
 

Комментарии:

1. Спасибо. Проблема была с пустыми строками

2. Отлично. Вы ее нашли. Пожалуйста, тогда примите одно из сообщений? (или оба?) — если это вам поможет.