Regex для извлечения названий организаций в python - PullRequest
0 голосов
/ 12 декабря 2018

ПРОГРАММА ОБРАЗЦА

import re

demostr = "Department of Microbiology and Immunology. Faculty of Tropical Medicine, Mahidol University, Electronic address: pornsawan.lea@mahidol.ac.th."
org = re.search(r"([A-Z][^\s,.]+[.]?\s[(]?)*(Dept|Association|Office|University|Department)[^,\d]*(?=,|\d)", demostr).group()
print(org)   

ВЫХОД

Department of Microbiology and Immunology. Faculty of Tropical Medicine

Программа извлекает Организацию, Отдел из заданной строки.Работает нормально, если есть , после Immunology.но когда в случаях есть точка . после организации, она извлекает неправильный вывод.Требуемый выходной сигнал показан ниже -

ОЖИДАЕМЫЙ ВЫХОД

Department of Microbiology and Immunology

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Пожалуйста, попробуйте ниже код.

import re

demostr = "Department of Microbiology and Immunology. Faculty of Tropical Medicine, Mahidol University, Electronic address: pornsawan.lea@mahidol.ac.th."
org = re.search(r"([A-Z][^\s,.]+[.]?\s[(]?)*(Dept|Association|Office|University|Department)[^,\d]*?(?=,|\.|\d)", demostr).group(0)
print(org)  

Выход

Department of Microbiology and Immunology
0 голосов
/ 12 декабря 2018

Вы две вещи в своем регулярном выражении, это будет нормально работать

([A-Z][^\s,.]+[.]?\s[(]?)*(Dept|Association|Office|University|Department)[^,\d]*?(?=,|\.|\d)

То, что вы пропустили

  • .*- Это жадный характер, вам нужно сделать его ленивым из-за вашего требования.
  • \. - Вы не включили . в свое чередование.

Код

    import re

    demostr = "Department of Microbiology and Immunology. Faculty of Tropical Medicine, Mahidol University, Electronic address: pornsawan.lea@mahidol.ac.th."
    org = re.search(r"([A-Z][^\s,.]+[.]?\s[(]?)*(Dept|Association|Office|University|Department)[^,\d]*?(?=,|\.|\d)", demostr).group(0)
    print(org) 

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...