#python #file #python-3.x
#python #файл #python-3.x
Вопрос:
Я импортирую текстовый файл в Python 3, я могу успешно распечатать элемент / строку, которые я использую в качестве идентификатора, однако у меня возникают трудности с печатью следующей строки и сохранением этого значения.
Я использую 'Anchor'
для поиска следующих строк. Количество строк между ними 'Anchor'
различно, что означает, что иногда между ними возникает мусор / шум 'Anchor'
, однако глубина и расстояние от берега всегда равны количеству строк от якоря. Я попытался добавить 1 к строке, так как функция if позволяет мне знать, что это 'Anchor'
значение, однако я получаю следующее:
TypeError: Can't convert 'int' object to str implicitly
Файл выглядит так:
asfasdfasdf
Anchor
The depth is 30 Feet
5 miles from shore
asdfasdsf
Anchor
The depth is 24 feet
8 miles from shore
Anchor
The depth is 21 feet
4 km from shore
Попытка со следующим кодом:
f = open('test.txt', 'r', encoding='utf8')
for line in f.readlines():
if 'Anchor' in line:
print(line 1)
f.close()
Ответ №1:
Вы могли бы ввести переменную, представляющую состояние последней строки, например:
previous_line_was_anchor = False
for line in f.readlines():
if 'Anchor' in line:
previous_line_was_anchor = True
else:
if previous_line_was_anchor:
print line
previous_line_was_anchor = False
Комментарии:
1. Спасибо за это решение, есть мысли о том, как печатать дополнительные позиции после «привязки»?
2. Это не было частью вашего первоначального вопроса. Вы должны принять ответ как есть.
Ответ №2:
Я бы настоятельно рекомендовал использовать итераторы python.
Похоже, ваша проблема больше подходит для пользовательской итерации, а не для использования for .. in ..
цикла:
lines = iter(f.readlines())
while True:
try:
if next(lines) == 'Anchor':
print(next(lines))
except StopIteration:
break
Если вам нужно напечатать дополнительные строки после «привязки», просто добавьте больше print(next(lines))
вызовов.