【问题标题】:Quasi xml extracting text bewtween 2 start tags准xml在2个开始标签之间提取文本
【发布时间】:2017-08-08 07:44:33
【问题描述】:

我从 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

但由于数据字段中的额外分号而导致回溯错误(列表索引超出范围) 关于如何做得更好的任何想法?

【问题讨论】:

    标签: python regex pdf-scraping


    【解决方案1】:

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

    (1) 数据字段 1 -> 第一项 --> 在 dict 中创建新条目并追加...

    (3) 数据字段 3 -> 下一项 --> 在条目处追加

    (5) 数据字段 5; -> 下一项 --> 在条目处追加

    (1) 数据字段 1 -> Next item = new line --> 创建一个新条目并追加...

    也许这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2011-12-31
      • 1970-01-01
      • 2021-06-24
      • 2016-09-10
      • 1970-01-01
      相关资源
      最近更新 更多