Разделение текста с помощью разделителя и создание HTML-страницы - PullRequest
1 голос
/ 22 мая 2019

У меня есть такой текстовый файл: -

-----Starting Step for step1-----
text1
text2
text3
-----Ending Step for step1-----
-----Starting Step for step2-----
text4
text5
text6
-----Starting Step for step3-----
text7
text8
text9
-----Ending Step for step3-----

text10
text11
text12
-----Ending Step for step2-----

После открытия файла журнала я пытался найти шаблоны Starting Step и соответствующее содержимое.

Я сохраняю его в значении переменной. Теперь один раз, если я получу еще один шаблон Начального шага, прежде чем получу шаблон Конечный шаг, я считаю его дочерним для более раннего родителя.

with open('C:\Python27\sample.log','r') as f:
    with tag('html'):
        with tag('body'):
            with tag('pre'):
                for line in f:
                        value=re.findall(r'Starting Step for (\w+)',line)
                        new_value=re.findall(r'Ending Step for (\w+)',line)
                        if value not in parent_tag_stop and value not in parent_tag_start:
                            if parent_tag_start:
                                parent_tag_start.append(value)
                            else:
                               child_tag[parent_tag_start[-1]] =value

                        elif new_value:
                                parent_tag_stop.append(value)
                                if tag==new_value[0]:
                                    with tag('a', href='#{0}'.format(new_value)):
                                        text(value)
                                    value=''
                        else:
                            value+=line

Я хочу разделить каждый блок от начального шага до конечного шага и создать html-страницу с шагами 1, step 2 и т. Д. В качестве тегов привязки и соответствующим содержимым в качестве текста. Шаг 3 здесь будет дочерним привязкой на шаге 2, а его содержимое будет частьюstep2 также

1 Ответ

0 голосов
/ 20 июня 2019

Я не уверен, что это правильная структура вывода, но я пришел с этим решением:

from bs4 import BeautifulSoup
import re
from pprint import pprint

data = '''-----Starting Step for step1-----
text1
text2
text3
-----Ending Step for step1-----
-----Starting Step for step2-----
text4
text5
text6
-----Starting Step for step3-----
text7
text8
text9
-----Ending Step for step3-----

text10
text11
text12
-----Ending Step for step2-----'''


data = re.sub(r'-----Starting Step for step(\d+)-----', r'<a href="#step\1" /><div>', data)
data = re.sub(r'-----Ending Step for step\d+-----', r'</div>', data)

soup = BeautifulSoup(data, 'lxml')
print(soup.prettify())

Печать:

<html>
 <body>
  <a href="#step1">
  </a>
  <div>
   text1
text2
text3
  </div>
  <a href="#step2">
  </a>
  <div>
   text4
text5
text6
   <a href="#step3">
   </a>
   <div>
    text7
text8
text9
   </div>
   text10
text11
text12
  </div>
 </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...