我从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
但是由于数据字段中有额外的分号,因此只会收到回溯错误(列表索引超出范围( 关于如何做得更好的任何想法?
我会先写一个解析器,读取项目的原始数据项,然后决定如何处理该项目:
(1( 数据字段-1 -> 第一项 -->字典中创建新条目并附加...
(3( 数据字段-3 -> 下一项 -->在条目时附加
(5( 数据字段-5; -> 下一项 -->在条目时附加
(1( 数据字段-1 -> 下一项 = 新行 -->创建一个新条目并附加...
也许这有帮助...