Python 有没有办法在文本或字符串中找到相同模式的块?

Python 有没有办法在文本或字符串中找到相同模式的块?,python,pattern-matching,Python,Pattern Matching,示例 我有一个文本或字符串,如: “学生1 学生姓名-abcd xyz abcd是个聪明的孩子。 第1卷 备注-无需关注学习。 学生2 学生姓名-pqr def pqr是一个聪明的孩子。 第三卷“ 所以这里我试图得到两个块,比如: 块1: 学生1 学生姓名-abcd xyz abcd是个聪明的孩子。 第1卷 块2: 学生2 学生姓名-pqr def pqr是一个聪明的孩子。 滚动编号-3这可以使用正则表达式拆分,使用滚动编号作为匹配项 Ex: import re s = """Student

示例

我有一个文本或字符串,如:
“学生1
学生姓名-abcd xyz
abcd是个聪明的孩子。
第1卷
备注-无需关注学习。
学生2
学生姓名-pqr def
pqr是一个聪明的孩子。
第三卷“

所以这里我试图得到两个块,比如:
块1: 学生1
学生姓名-abcd xyz
abcd是个聪明的孩子。
第1卷

块2: 学生2
学生姓名-pqr def
pqr是一个聪明的孩子。

滚动编号-3

这可以使用正则表达式拆分,使用
滚动编号作为匹配项

Ex:

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')
输出:

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')

块的行数是否始终相同?您可以尝试通过更改块大小来最小化字符串相似性度量,如Levenshtein距离或余弦相似性。最小化度量的块大小将为您提供所需的分割。