gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:42:07 26 4
gpt4 key购买 nike

例如,我有以下文本:

[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+')

result = []
for outer in rx_outer.finditer(data):
section = outer.group('section')
values = tuple([value.group(0) for value in rx_inner.finditer(outer.group('content'))])
result.append((section,) + values)

print(result)

或者 - 作为列表理解:
result = [(section,) + tuple([value.group(0) for value in rx_inner.finditer(outer.group('content'))])
for outer in rx_outer.finditer(data)
for section in [outer.group('section')]]

print(result)

机器人会屈服
[('ABC', 'foo 25', 'bar 20'), ('DEF', 'foo 50')]

查看 "outer" 的演示和 inner表达式,剩下的就是编程逻辑了。

关于python - 使用正则表达式从python中的文本中提取特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62277231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com