gpt4 book ai didi

python - 从长字符串中提取特定的字母数字模式

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:16 24 4
gpt4 key购买 nike

我想从类似这样的文本中匹配组号和他们的行组:

domain 1 
654789 text (one or more lines)
domain 2
125478 text (one or more lines)

我想得到:

domain 1 654789
domain 2 125478

我的代码是:

import re
from re import match

domain = re.compile(r'[-+]?domain')
terminal = re.compile(r'^[0-9][0-9]{6}(?!\d)')
with open('in_texto.txt') as file_in:
for linea in file_in:
for match in re.finditer(domain, linea):
dom = re.findall('\d+', linea)[0]
print(dom)
for lineas in file_in:
for match in re.finditer(terminal, lineas):
print(dom+" "+lineas, end='')

但它只打印:

654789 text
956478 text
125478 text
.....

我该如何解决这个问题?

最佳答案

这是一个使用模块 regex 的解决方案(它实际上与使用 re 完全相同)

# import regex  # or re - then subsitute regex.split for re.split etc.
# string = 'domain 1 \ntotal.....\n======= \n\n654789 text \n956478 text\ndomain 2\n======= \ncolumn..... \n\n\n125478 text \n456987 text '

domains = regex.split(r'domain \d+', string)
out = list()
for k in range(1, len(domains)):
out.extend(['domain {} {}'.format(k, d) for d in regex.findall(r'\d+(?=\s*text)', domains[k])])
out
# ['domain 1 654789', 'domain 1 956478', 'domain 2 125478', 'domain 2 456987']
  • 首先,我们按域拆分原始文本字符串。
  • 然后对于每个域,我们使用正则表达式 \d+(?=\s*text) 获取数字。
  • 我们最终处理提取的数字,添加相应的域并将结果附加到我们的列表。

关于python - 从长字符串中提取特定的字母数字模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56227080/

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