繁体   English   中英

是否有一个 python 正则表达式来查找街道名称,后跟一个或多个人,然后是门牌号?

[英]Is there a python Regex to find street name followed by one or multiple persons followed by house number?

我有一个从中提取文本数据的图像数据集。 我将文本作为字符串,但现在想将此文本分成更结构化的形式。

数据如下所示:

Camden Row,Camberwell, S.E—A. Massey, M.D.4.

Campden Hill, Kensington.
(Hornton House).

Campden Hill Road, Kensington.
James, M.D. 6.

Canning Town. E—R. J. Carey (Widdicombe-
co ee

Cannon Street. E.C.—R. Cresswell, 151.

Cannon Street Road. E.—R. W. Lammiman, 106.
—J. R. Morrison, 57.—B. R. Rygate, 126.—
J. J. Rygate, M.B. 126.

Canonbury N. (see foot note)—J. Cheetham, M.D.
(Springjield House),

Canonbury Lane, N.—H. Bateman,
Roberts, 10.—J. Rose, 3.

如您所见,它涉及街道名称,后跟代表(N/S/E/W/NW/SE 等)的字母,然后是人名和门牌号。

到目前为止,我一直在使用 python NLTK。 我可以使用以下方法将街道、名称和数字提取为单个实体:

tagged = nltk.pos_tag(tokens)

我想要实现的是以下列表:

[street name, person, house_number]

例如:

[[Cannon Street Road, R. W. Lammiman, 106][Cannon Street Road, J. R. Morrison, 57]]

我的计划是使用街道名称作为开始的锚点,然后使用数字作为结束点的锚点,但由于每条街道上有多个门牌号,这有点复杂。

任何人都可以建议一种可能适用于此的方法/正则表达式吗?

如果是的话,非常感谢。 詹姆士。

如果格式一致,您可以拆分字符串。

text = "Cannon Street Road. E.—R. W. Lammiman, 106.—J. R. Morrison, 57.—B. R. Rygate, 126.—J. J. Rygate, M.B. 126."
text = text.split("—")
infos = list()
streetname = text[0]

for i in text[1:]:
    infos.append([streetname, i])

print(infos)

结果是:[['Cannon Street Road。 E.', 'RW Lammiman, 106.'], ['Cannon Street Road。 E.'、'J. R。 莫里森,57 岁。'],['坎农街路。 E.'、'B. R。 Rygate, 126.'], ['Cannon Street Road. E.', 'JJ Rygate, MB 126.']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM