迭代/解析文件中的多个值

时间:2018-04-01 03:33:34

标签: python regex parsing

我一直在努力改进我编写的函数的一些结果,以便从文件中提取列表,但是已经碰壁了。我已经得到了一个值,可能是两个,但相当不一致。就标签和值而言,结果会有所不同(下面的例子)。我认为正则表达式可能是要走的路,但我最多只能使用它。

练习1:

Run                    Bora Hot   Record                                       Casing  Record
 No.                   From                 To            Sue                      fr                    To

One       4 .3/4    4569                    TD            5.5     15   .5      Surface               4569

预期结果=位:4 3/4,来自:4569,收件人:TD,案例:​​5.5,Wt:15.5

练习2:

Run                    Bore- Hoke  Record                                        Casing Record
 No.       Bit          From                 To            Size      Wgt.           from
 Onel    4.75      4587                  4840            5 .5       N/ A         Surface

预期结果=位:4.75,来自:4587,至:4840,大小:5.5,Wt:N / A

实例3:

Run                     Bore-Ho  Record                                        Ceng     Record
 No.                    From                  To            Sue       Wot             From 
One       4 .3/  4    4679                  TD             5 .1/  2   15 .5       Surface

预期结果:位:4 3/4,来自:4679,收件人:TD,案例:​​5 1/2,Wt:15.5

以下代码示例。我不会粘贴图书馆,但你会对我正在做的事情有一个大概的了解。我再次相信这是无效的方式。

def far_m(lab,txt):
txt2 = txt.strip().split('       ')[-1]
pos = -1
if isMatch(lab,txt2):
    t1 = txt2.strip().split()[0]
    pos = txt.find(t1)

for i,r in enumerate(rtxt):
    if far_m('case', r) > -1:
        if i >= 2:
            rx = far_m('case', r)
            j = i-2
            rj = rtxt[j]
            if len(rj) > rx:
                # z = rj[int(rx/2):]
                a = rj
                a1 = get_start(rj,int(rx*0.7))
                a2 = get_start(rj,len(rj))
                ap = str(rj)[a1:a2]
                x1 = get_start(rj,a1+0.3*fn)
                x2 = get_start(rj,x1+0.42*fn)
                x3 = get_start(rj,x2+0.5*fn)
                x4 = get_start(rj,x3+0.5*fn)
                b1 = a[a1:x1].strip()
                b2 = a[x1:x2].strip()
                b3 = a[x2:x3].strip()
                b4 = a[x3:].strip()
                if b1 == '' and b2 != '' and b4 != '':
                    b1 = '7'
                found.foundList.append(['size', b1.strip()])
                found.foundList.append(['wt', b2.strip()])
                found.foundList.append(['to', b3.strip()])
                found.foundList.append(['from', b4.strip()])

0 个答案:

没有答案