Python вставить текст после последнего совпадения в поиске - PullRequest
0 голосов
/ 28 марта 2012

Я хотел бы найти последнюю строку, соответствующую определенному шаблону, в python.Я пытаюсь найти последнюю строку, содержащую определенный элемент (line_end), и вставить блок информации в виде нескольких новых строк после него.Пока у меня есть:

 text = open( path ).read()
 match_found=False
 for line in text.splitlines():
     if line_pattern in line:
         match_found=True
 if not match_found:

(line_end='</PropertyGroup> 'и я не уверен, как использовать регулярные выражения даже с хорошими поисковыми словами). Может кто-нибудь помочь советом, как найти последний элемент поиска, и не выходить за рамкичтобы я мог вставить блок текста прямо там?Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Использование re

import re

text = open( path ).read()
match_found=False
matches = re.finditer(line_pattern, text)

m = None      # optional statement. just for clarification
for m in matches:
   match_found=True
   pass       # just loop to the end

if (match_found):
   m.start()  # equals the starting index of the last match
   m.end()    # equals the ending index of the last match 

   # now you can do your substring of text to add whatever
   #   you wanted to add. For example,
   text[1:m.end()] + "hi there!" + text[(m.end()+1):]
1 голос
/ 28 марта 2012

Если файл не большой, вы можете прочитать его в обратном порядке:

for line in reversed(open("filename").readlines()):
    if line.rstrip().endswith('</PropertyGroup>'):
        do_something(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...