Печать строк в файле - PullRequest
       26

Печать строк в файле

0 голосов
/ 19 декабря 2009

Так вот у меня проблема,

Я могу найти термин поиска в моем файле, но в данный момент я могу только распечатать строку, в которой находится термин поиска. (Спасибо Вопросам, опубликованным людьми ранее =)) Но я не могу распечатать все строки в конце файла после условия поиска. Вот кодировка, которая у меня пока есть: -

search_term = r'\b%s\b' % search_term

for line in open(f, 'r'):
    if re.match(search_term, line):
        print line,

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 19 декабря 2009

Это может быть значительно улучшено, если вы сначала скомпилируете регулярное выражение:

search_term_regex = re.compile(r'\b%s\b' % search_term)

found = False
for line in open(f):
    if not found:
        found = bool(search_term_regex.findall(line))
    if found:
        print line,

Тогда вы не повторяете строку печати.

0 голосов
/ 19 декабря 2009

Вы можете установить логический флаг, например, "found = True"; и сделайте проверку на наличие == True, и если это так, выведите строку.

Код ниже:

search_term = r'\b%s\b' % search_term

found = False;
for line in open(f, 'r'):
        if found==True:
            print line,
        elif re.match(search_term, line):
            found = True;
            print line,

Чтобы объяснить это немного: с логическим флагом вы добавляете некоторое состояние в ваш код, чтобы изменить его функциональность. То, что вы хотите, чтобы ваш код делал, зависит от того, нашли ли вы определенную строку текста в вашем файле или нет, поэтому лучший способ представить такое двоичное состояние (я нашел строку или не нашел ее?) С помощью переменная типа boolean, и затем код выполняет разные действия в зависимости от значения переменной.

Кроме того, elif - это просто сокращение else if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...