Существует ли Python Regex для поиска названия улицы, за которым следует один или несколько человек, за которым следует номер дома? - PullRequest
1 голос
/ 30 октября 2019

У меня есть набор данных изображения, из которого я извлекаю текстовые данные. У меня есть текст в виде строки, но теперь я хочу разделить этот текст в более структурированную форму.

Данные выглядят следующим образом:

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]]

Я планировал использовать названия улиц в качестве якоря для начала, а затем цифру для якоря в конце, но это немного сложнее из-за нескольких номеров домов на каждой улице.

Кто-нибудь может предложить метод / регулярное выражение, которое могло бы работать для этого?

Спасибо, если так! Джеймс.

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете разбить строку, если это согласованный формат.

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. ',' JR Morrison, 57. '], [' Cannon Street Road. E. ',' BR Rygate, 126. '], [' Cannon Street Road. E. ',' JJ Rygate, MB 126. ']]

...