[使用正则表达式从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文本中提取特定单词的主要内容,如果未能解决你的问题,请参考以下文章