#python-3.x
#python-3.x
Вопрос:
Я попытался напечатать 2 строки под кодом, который пользователь вводит из текстового файла.
мой текстовый файл :
86947367
banana
5
78364721
apple
3
35619833
orange
2
84716491
sweets
8
46389121
chicken
10
Итак, если пользователь вводит, например 46389121
, тогда он будет печатать
chicken
10
Я пробовал :
file = 'read_it.txt'
user = input('Enter code')
with open(file, 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines): # enumerate will count and keep track of the lines
if line == user:
print("{}n{}".format(lines[i 1], lines[i 2]))
но это дает мне вывод пустых строк, любая помощь, пожалуйста?
Комментарии:
1. Для начала вам нужно сделать отступ вашего
if
блока под вашимfor
циклом.2. yh sry (в основном коде есть отступ)
3. Вы пробовали делать
if line.strip() == user
? Потому что это, вероятно, не удовлетворяетif line == user
, потомуline
что в конце есть новая строка, аuser
, вероятно, нет4. выдает ошибку: строка вне диапазона индексов
Ответ №1:
Попробуйте удалить строку перед сравнением с использованием rstrip()
:
file = 'read_it.txt'
user = input('Enter code')
with open(file, 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines): # enumerate will count and keep track of the lines
if line.rstrip() == user:
print("{}n{}".format(lines[i 1], lines[i 2]))
Имейте в виду, что вместо того, чтобы загружать весь файл сразу, вы можете просто выполнить итерацию по нему следующим образом:
file = 'read_it.txt'
user = input('Enter code')
with open(file, 'r') as f:
for line in f:
if line.rstrip() == user:
print(next(f).rstrip())
print(next(f).rstrip())
break
rstrip()
Функция удаляет пробелы в конце строки. Пробелы включают ,
n
, t
, и т.д. r
Комментарии:
1. спасибо, второй вариант отлично работает, я впервые столкнулся с функцией rstrip() , можете ли вы объяснить, что она делает в этом контексте? И как я могу избавиться от пробела в выходных данных? Спасибо.
2. почему я не могу установить переменную для функции печати? Когда я это делаю и пытаюсь распечатать, это не дает мне ничего