如何在python中使用正则表达式从法律说明中提取信息

时间:2018-08-10 00:31:04

标签: python regex gis

我正在尝试使用正则表达式在有关地块的法律说明中提取度/分/秒和英尺。书面法律说明的示例如下:

  

从PT的第N行第31 N 56D 54M 00S W 365页继续   FT TH S 32D 06M 00S W 91/89 FT TH S 61D 54M 00S E 335/77 FT至   SD CO RD NO 31 TH N 32D 06M 00S E 62/62 FT向POB EXC的新行   该零件已在书1132中传送,第473页0 / 5900A

我编写了一个正则表达式,可以通过它查找我要寻找的区域,例如: N 32D 06M 00S E 62/62 FT。
问题是有时度数/分钟/秒之后没有直接书写脚。例如,它可能会说: N 32D 06M 00S E ,沿62/62 FT行驶。
“沿着这条路”是与我的正则表达式混淆的部分。

是否有解决此问题的好方法?下面是我的代码示例

用户输入:

legal_input=input("Paste legal description from RW here: ")

正则表达式代码找到cogo:

cogo_rgx = re.compile(r'([N]{,2}[S]{,2} \w{,1}\d{,2}D{,1} \d{,2}M{,1} \d{,2}S{,1}\s{,2}\w) (\s{,2}\d{1,4}\W{,1}\d{,2} FT){,1}') 

full_legal=cogo_rgx.findall(legal_input)

打印消息:

print("\nCogo below: \n")

从字典中打印键,然后打印值(dms和脚)。这样可以更容易阅读:

for key, value in full_legal:
   print(key, value)

1 个答案:

答案 0 :(得分:0)

尝试使用正则表达式:((?:N|S) \d{2}D \d{2}M \d{2}S (?:E|W) )(?:.)*?(?=\d+(?:\/\d+)? FT)(\d+(?:\/\d+)? FT)

并组合捕获组1和2

Demo