python регулярное выражение для имен людей - PullRequest
1 голос
/ 06 мая 2020

привет, я попытался извлечь все имена из следующей строки:

import re
def Find(string):
    url = re.findall(r"[A-Z][a-z]+,?\s+(?:[A-Z][a-z]*\.?\s*)?[A-Z][a-z]+", string)
    return url
string = 'Arnold Schwarzenegger was born in Austria. He and Sylvester Stalone used to run a restaurant with J. Edgar Hoover.'
print(Find(string))

, но у меня проблема с выводом (J. не печатается на edgar)

['Arnold Schwarzenegger', 'Sylvester Stalone', 'Edgar Hoover']

еще один вопрос :) Я пытался напечатать вторую строку, но у меня возникла проблема. мне нужно написать регулярное выражение, которое печатает его без www or http или https, как в примере:

import re
def Find(string):
    url = re.findall(r'https?://[^\s<>"]+|www\.[^\s<>"]+', string)
    return url
string = 'To learn about pros/cons of data science, go to http://datascience.net. Alternatively, go to datascience.net/2020/'
print(Find(string))

вывод:

['http://datascience.net.']

спасибо

1 Ответ

0 голосов
/ 06 мая 2020

Вопрос 1

Вот регулярное выражение, которое работает для указанного c случая трех имен:

((?:[A-Z]\.\s)?[A-Z][a-z]+\s[A-Z][a-z]+)

дает

Arnold Schwarzenegger
Sylvester Stalone
J. Edgar Hoover

Вопрос 2

(?:http)?s?(?:\:\/\/)?(?:www.)?([A-z]+\.[A-z]+(?:[\./][A-z0-9]+)*\/?)

дает

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