#python-3.x
#python-3.x
Вопрос:
Я пытаюсь напечатать строки с определенной строкой в строке. Например, в текстовом файле, если в файле есть «В текстовом файле есть 5 строк», тогда он должен искать «В строке 1», «В строке 3», «В строке 5» и печатать все эти строки.
There are 5 lines in a text file
In line1,
In line2,
In line3,
In line4,
In line5,
ожидаемый результат
There are 5 lines in a text file, In line1, In line3, In line5,
Пока я могу напечатать строку с определенной строкой.
with open ('input.txt', 'r') as f:
for line in :
if 'There are 5 lines in a text' in line:
print (line)
При этом я могу печатать только первую строку. Как мы печатаем все эти строки вместе, используя python? Любая помощь будет оценена. Заранее спасибо.
Комментарии:
1. опубликуйте код, который вы пробовали до сих пор?
2. Это всегда пять строк или их можно изменить?
3. @ThilinaLakshan Это изменится. Это всего лишь часть файла, который я пытаюсь распечатать. Он должен искать «В текстовом файле есть 5 строк», если он существует, тогда он должен искать строки.
4.
'There are 5 lines in a text'
Всегда ли строка является первой строкой или это может быть случайный номер строки в файле?5. @JoeFerndz Это может быть случайным. Это всего лишь часть файла.
Ответ №1:
Теперь, когда я понял постановку задачи, вот код для этого.
found = False
in_line = ['In line1', 'In line3', 'In line5']
with open ('abc.txt', 'r') as f:
for line in f:
if 'There are 5 lines in a text' in line:
print (line.strip())
found = True
if found and any(x in line for x in in_line):
print (line.strip())
Если исходный файл :
There are 5 lines in a text file
In line1,
In line2,
In line3,
In line4,
In line5,
Тогда вывод будет:
There are 5 lines in a text file
In line1,
In line3,
In line5,
Если исходный файл:
In line1,
In line2,
In line3,
There are 5 lines in a text file
In line4,
In line5,
Тогда вывод будет:
There are 5 lines in a text file
In line5,
Я бы рекомендовал вам обновить вопрос со всей информацией, которой вы поделились в разделе комментариев.
Ответ №2:
Вы можете использовать регулярное выражение для извлечения числа из предложения,
import re
# If txt match with specific format it extract the value from the sentence and return it
# otherwise return 0
def readDefinition(txt):
match = re.search("^There are (d ) lines in a text file$", txt)
if match:
return int(match.group(1))
return 0
with open("input.txt") as file:
lines = file.read().split('n')
i = 0
while len(lines) > i:
count = readDefinition(lines[i]) # try to match and extract value
if count > 0:
print(lines[i], ":", *lines[i 1 : i count 1]) # print result
i = count 1
else:
i = 1
Если вы ищете поиск по следующей строке,
Вы можете выполнить поиск внутри lines[i 1 : i count 1]
Например, если ваш input.txt
выглядит так,
There are 5 lines in a text file
In line1,
In line2,
In line3,
In line4,
In line5,
extra
There are 3 lines in a text file
In line1,
In line2,
In line3,
extra
extra
Вывод будет,
There are 5 lines in a text file : In line1, In line2, In line3, In line4, In line5,
There are 3 lines in a text file : In line1, In line2, In line3,