python如何获取字符串中多次出现的特定字符之间的字符

2024-05-20 15:47:13 发布

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

我有一根绳子,大约有270米长,如下所示

<DOC> <DOC>+BDTag
<S> <S>+BSTag
--- ----
--- ----
</S> </S>+ESTag
<S> <S>+BSTag
--- ----
--- ----
</S> </S>+ESTag
<S> <S>+BSTag
--- ----
--- ----
</S> </S>+ESTag
-----

我想得到所有字符串中<S> <S>+BSTag</S> </S>+ESTag之间的字符,并创建一个列表

你能给我举个最快解决方案的例子吗

谢谢你


Tags: 字符串列表doc解决方案字符例子绳子estag
1条回答
网友
1楼 · 发布于 2024-05-20 15:47:13

一个简单的解决方案是使用正则表达式

例如使用^{}我们可以写

>>> str = """<DOC> <DOC>+BDTag
... <S> <S>+BSTag
... hello world
... </S> </S>+ESTag
... <S> <S>+BSTag
... line 2
... </S> </S>+ESTag
... <S> <S>+BSTag
... line 3
... </S> </S>+ESTag
...   -"""

>>> re.findall(r'<S> <S>\+BSTag(.*?)</S> </S>\+ESTag', str, re.DOTALL)
['\nhello world\n', '\nline 2\n', '\nline 3\n']

它做什么?

  • <S> <S>\+BSTag匹配起始行
  • (.*?).*匹配任何东西?使它变懒,这样当它看到第一条结束线时就停止了
  • </S> </S>\+ESTag匹配结束行
  • re.DOTALL这可以确保.也匹配新行

相关问题 更多 >