2015-09-17 4 views
0

У меня есть несколько конфигурационных файлов, которые создаются динамически с форматом, как это:Удаление строки в Python между метками

line1 
line2 
lines..... 
# BEGIN TAG1 
foo 
foo 
foo 
# END TAG1 
# BEGIN TAG2 
bar 
bar 
bar 
# END TAG2 
lines 
lines 
lines 

мне нужно удалить строки между Начинайте и заканчивайте для конкретного TAG (т.е. между НАЧАТЬ TAG1 и END TAG1, как я могу это сделать с питоном ?. Я делал это раньше с SED:

sed -n '/# BEGIN i-83/,/# END i-83/!p' 

Но я не нашел способ с питоном, и я предпочитаю не делать системные вызовы для запуска sed от python.

Результат должен быть, как этот:

line1 
line2 
lines..... 
# BEGIN TAG2 
bar 
bar 
bar 
# END TAG2 
lines 
lines 
lines 

С наилучшими пожеланиями

+8

Похоже, что вы хотите нам написать код для вас. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если есть), ожидаемого результата и выход, который вы фактически получаете (вывод консоли, трассировка и т. Д.). Чем больше деталей вы предоставляете, тем больше ответов вы получите. Проверьте [FAQ] и [ask]. –

ответ

0

Вы можете сделать так,

with open(file) as f: 
    m = True 
    for line in f: 
     if 'BEGIN TAG1' in line: 
      m = False 
     elif 'END TAG1' in line: 
      m = True 
      continue 
     if m: 
      print (line, end="") 
Смежные вопросы