用同一准则多次提取文本

2024-10-01 22:42:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,在一个单元格中有一个长文本,例如:

-学生-凯瑟琳A-/学生-接受abc和-学生-迈克B-/学生- 收到def。你知道吗

我的问题是:如何提取-student-和-/student-之间的文本,并创建两个新列,第一个列中包含“Kathrin A”,第二个列中包含“Mike B”?意思是这个标准在文本中满足两次或多次。你知道吗

到目前为止,我尝试了:结构提取物('-student-\s*([^.]*)\s*-/student-',expand=False)但这只提取第一个匹配,即Kathrin A

非常感谢!你知道吗


Tags: 数据文本false标准def结构student学生
2条回答

可以将str.split与regex一起使用,并按如下方式定义分隔符:

splittxt = ['-student-','-/student-']
df.text.str.split('|'.join(splittxt), expand=True)

输出:

  0            1                   2         3               4
0     Kathrin A    received abc and    Mike B    received def.

另一种方法是尝试^{}。唯一需要注意的是,结果被放入多行而不是多列。有一些重新安排,这应该不是一个问题,请更新这个答复,如果你最终解决了。你知道吗

也就是说,我还对正则表达式做了一点修改,这将有助于捕获这两个表达式。你知道吗

'(?<=-student-)(?:\s*)([\w\s]+)(?= -/student-)'

唯一的捕获组是[\w\s]+,因此您一定不会捕获整个字符串。你知道吗

相关问题 更多 >

    热门问题