在两个开始标记之间提取准xml文本

2024-03-29 00:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我从pdf中搜集了一些数据。它的数据几乎像XML,看起来像这样 "(1) Data-field-1 (3) Data-field-3 (5) Data-field-5; (1) Data-field-1 (2) Data-field-2 (3) Data-field-3 (5) Data-field-5; ; (2) Data-field-2 (3) Data-field-3 (5) Data-field-5 (6) Data-field-6;"

因此,对于每个条目,数据字段都以(x)开头。通常,条目以分号(;)结尾但是数据字段中经常有分号,所以我不能用它作为分隔符。新记录已开始的唯一指标是开始标记中的整数小于以前的整数。标记的范围是1到6。我想试着找出一个字典,这样看起来就像JSON

{'Row1':{1 : 'Data-field-1', 3 : 'Data-field-3', 5 : 'Data-field-5'},'Row2': {1: 'Data-field-1', 2: 'Data-field-2', 3: 'Data-field-3' 5: 'Data-field-5'},Row3': { 2: 'Data-field-2' ,3: 'Data-field-3' ,5: 'Data-field-5',6: 'Data-field-6'}

尝试在python中使用正则表达式来实现这一点,这是我的最后一段代码 对于匹配中的匹配:

inner_dict={}
    test=filter(None, re.split(";", match))
    print test
    for i,x in enumerate(test):
        if i==0 :
            inner_dict[1]=x
        else:
            y=re.findall('\((\d)\)',x)[0]
            inner_dict[y]=re.findall('\(\d\)\s(.+)',x)[0]
    outer_dict[n]=inner_dict
    n+=1

但是,由于数据字段中有额外的分号,所以仅获取回溯错误(列表索引超出范围) 有没有办法做得更好


Tags: 数据标记testrefielddatapdf结尾
1条回答
网友
1楼 · 发布于 2024-03-29 00:24:20

我将首先编写一个解析器,并为项读取此原始数据项,然后决定如何处理该项:

(1)数据字段-1 -&燃气轮机;第一项>;在dict和append中创建新条目

(3)数据字段-3 -&燃气轮机;下一项>;在条目处追加

(5)数据域-5; -&燃气轮机;下一项>;在条目处追加

(1)数据字段-1 -&燃气轮机;下一项=新行>;创建一个新条目并附加

也许这有帮助

相关问题 更多 >