Python - 基于 2 个关键字用长字符串拆分列表

如何解决Python - 基于 2 个关键字用长字符串拆分列表

我有一个包含长字符串的列表。如何拆分字符串以将部分从“MyKeyword”提取到“My Data”。这些词在我的列表中多次出现,所以我想以此为基础进行拆分,并在可能的情况下包括 MyKeyword 和 MyData

当前数据示例:

['MyKeyword This is my data MyData. MyKeyword and chunk of text here. Random text. MyData is this etc etc ']

所需的输出

['MyKeyword This is my data','MyData.','MyKeyword and chunk of text here. Random text.','MyData is this etc etc ']

当前代码


from itertools import groupby
#linelist = ["a","b","","c","d","e","a"]
split_at = "MyKeyword"
[list(g) for k,g in groupby(output2,lambda x: x != split_at) if k]

解决方法

您可以使用正则表达式,在惰性模式下匹配从 MyKeywordMyData 的所有文本:

>>> import re
>>> re.findall("MyKeyword.*?MyData\.?","MyKeyword This is my data,MyData. MyKeyword and chunk of text here. Random text. MyData is this etc etc ")
['MyKeyword This is my data,MyData.','MyKeyword and chunk of text here. Random text. MyData']
  • .*? 表示 0 到无限个字符,但在惰性模式 (*?) 下,即尽可能少;
  • \.? 表示可选期间。

EDIT(根据新要求):

您需要的正则表达式类似于

MyKeyword.*?(?= ?MyData|$)|MyData.*?(?= ?MyKeyword|$)

它从匹配MyKeyword(对应于MyData)的点开始,然后捕获尽可能少的字符,如上所述,直到到达MyData(对应于MyKeyword)。 |) 或字符串的结尾。

确实:

  • $ 是一个特殊字符,表示“或”
  • ? 匹配字符串的结尾
  • (?=<expr>) 是一个可选空格
  • <expr> 被称为正向前瞻,意思是“跟随 resources/views/vendor/nova

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?