python - 使用python从TXT文件中提取信息

标签 python string text-extraction

我有一个如下所示的 TXT 文件:

group1

trigger: set_7  string

target: set_7  string

target: set_9  string

trigger: set_8  string

target: set_8  string

source: set_9  string

trigger: set_9  string

group2

source: set_10  string

trigger: set_10  string

target: set_10 string

我必须提取与每组相对应的触发器、目标和源。每组至少包含一个触发器,但并不总是包含源或目标。我想将每个集合对应的值打印为带有列的行,将空值保留为 NONE,例如:

set_7  trigger:string target:string  source:NONE
...

set_10 ...

知道如何做到这一点吗?

谢谢!

最佳答案

一个粗略的解决方案可能是这样的(使用re模块和itertools.groupby):

txt = '''


group1

trigger: set_7 string

target: set_7 string

target: set_9 string

trigger: set_8 string

target: set_8 string

source: set_9 string

trigger: set_9 string

group2

source: set_10 string

trigger: set_10 string

target: set_10 string

'''

import re
from itertools import groupby

s = sorted( re.findall(r'(.*?):.*?set_(\d+)\s+(.*)', txt), key=lambda k: int(k[1]) )

for v, g in groupby(s, lambda k: int(k[1])):
    d = {x: y for x, _, y in g}
    print('set_{} trigger: {} target: {} source: {}'.format(v, d.get('trigger', 'NONE'),
                                                               d.get('target', 'NONE'),
                                                               d.get('source', 'NONE')))

打印:

set_7 trigger: string target: string source: NONE
set_8 trigger: string target: string source: NONE
set_9 trigger: string target: string source: string
set_10 trigger: string target: string source: string

关于python - 使用python从TXT文件中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58981579/

相关文章:

html - HTML内容提取的最新技术是什么?

Python 检测损坏的编码

python - Zeromq:不允许使用 unicode,请使用 send_unicode

python - 当使用 itertools 并将函数应用于每一行时,“int”对象不可迭代

Python:从字符串中删除重复字符的最佳方法

python - 对图像中的单个字符进行校正

python - 如果每个函数都没有抛出任何错误,则按顺序运行 python 函数

string - 从golang中的字节数组解压gzip

c - 将十六进制字节转换为字符字符串

python - 从文本文件中提取文本 block 的正则表达式?