Есть ли способ найти блоки одинаковых шаблонов в тексте или строке? - PullRequest
0 голосов
/ 27 февраля 2020

Пример

У меня есть текст или строка типа:
"Студент 1
Имя студента - abcd xyz
abcd - умный kid.
Roll No - 1
Примечание - Нужно немного сосредоточиться на учебе.
Student 2
Имя студента - pqr def
pqr - умный ребенок.
Roll No - 3 "

Итак, я пытаюсь получить 2 блока, например:
Блок 1 : студент 1
Имя студента - abcd xyz
abcd - умный ребенок.
Roll № - 1

Блок 2 : студент 2
Имя студента - pqr def
pqr - умный ребенок.
Roll No - 3

1 Ответ

0 голосов
/ 27 февраля 2020

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

Пример:

import re

s = """Student 1
Student Name - abcd xyz
abcd is smart kid.
Roll No - 1
Remark - Need little focus on study.
Student 2
Student Name - pqr def
pqr is intelligent kid.
Roll No - 3"""

data = re.split("(Roll No \- \d+)", s)
for i in zip(data[::2], data[1::2]):
    print(i)

Выход:

('Student 1\nStudent Name - abcd xyz\nabcd is smart kid.\n', 'Roll No - 1')
('\nRemark - Need little focus on study.\nStudent 2\nStudent Name - pqr def\npqr is intelligent kid.\n', 'Roll No - 3')
...