[使用正则表达式从python文本中提取特定单词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[使用正则表达式从python文本中提取特定单词相关的知识,希望对你有一定的参考价值。

例如,我有以下文字:

[ABC]something
    foo 25
    bar 20

[DEF]something
    foo 50

.....以及其他类似的文本,例如

我想从方括号foo和bar和数字中提取三个词,这样我就可以像这样获得re.findall的结果[('ABC', 'foo 25', bar 20'), ('DEF', 'foo 50')]

我尝试了以下模式,但是在列表中返回了许多空字符串

\[(\w+)\]|\n\s+(\w+\s\d+)
答案

您可以使用

import re

data = """
[ABC]something
    foo 25
    bar 20

[DEF]something
    foo 50
"""

rx_outer = re.compile(r'''
    ^
    \[(?P<section>[^][]+)\]
    (?P<content>(?:.+[\r\n]?)+)
    ''', re.M | re.X)

rx_inner = re.compile(r'\w+\s+\d+')

values = [(section, value.group(0))
          for outer in rx_outer.finditer(data)
          for section in [outer.group('section')]
          for value in rx_inner.finditer(outer.group('content'))]
print(values)

哪个产量

[('ABC', 'foo 25'), ('ABC', 'bar 20'), ('DEF', 'foo 50')]

请参见"outer"inner表达式的演示,其余内容为编程逻辑。

以上是关于[使用正则表达式从python文本中提取特定单词的主要内容,如果未能解决你的问题,请参考以下文章

python 如何提取特定字符中间的内容

正则表达式从字符串中提取特定文本[重复]

在 Python 中使用正则表达式从特定 xml 标记中提取特定值 [重复]

python 正则表达式

如何修改与 Python 中特定正则表达式匹配的文本?

python正则表达式提取字符串