Вы можете начать с разделения instructions
, используя следующее регулярное выражение: "[0-9]+\. +?"
, которое соответствует числу с 1 или более цифрами, за которыми следует точка и один или несколько пробелов, например, , <6319126 >, "234. "
и т. д. Затем отформатируйте полученные строки, используя list-group
и list-group-item
начальной загрузки, чтобы создать группу списка вместе с номерами связанных элементов списка.
Следующая функция получает инструкции и регулярное выражение в качестве аргументов и возвращает строку с отдельными шагами инструкций, отформатированную как упорядоченный список для начальной загрузки.
import re
def format_instructions(instructions, regex = "[0-9]+\. +?"):
split_by_number = re.compile(regex).split(instructions) # splits instructions into steps
no_empty_str = filter(None, split_by_number) # removes resulting empty strings
steps = list(map(str.strip, no_empty_str)) # removes spaces at the beginning and at the end of each step
html = """<ul class="list-group">""" # list group begins
for i, step in enumerate(steps):
html += '\n <li class="list-group-item">{}. {}</li>'.format(i + 1, step) # concatenates list group item
html += "\n</ul>" # list group ends
return html # returns formate instructions
Пример:
instructions = "1. Adjust the bench to an incline of 15–30 degrees. 2. Lie back on the bench with the dumbbells, and, once in position, engage your core. 3. Press the dumbbells toward the ceiling. Your palms should be facing forward. Rotate your shoulders outward to engage your lats. Your upper back should remain tight and stable throughout the entire set."
formatted = format_instructions(instructions)
print(formatted)
Вывод:

Это предполагает, что в шагах инструкции нет совпадающих строк. В противном случае регулярное выражение необходимо изменить соответствующим образом.