Извлечение имени и номера из строки - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь извлечь содержимое «Текст сообщения», в частности имя (после слова «Допущено») и номер карты (внутри скобок), а затем поместить результаты в новые столбцы. Каков наилучший способ достижения этого? Я пытался

access_file['Name']=access_file['Message Text'].str.extract('(.*?)')

но полученный столбец был пустым.

Спасибо,

Message Type    Server Date/Time    Message Text    Message Date/Time
0   Card Admitted   7/25/2018 8:10  Admitted 'Santos, Samuel' (Card: 203532)   at '2nd Flr Check Rm 02-19' (IN).    7/25/2018 8:10
1   Card Admitted   7/25/2018 9:10  Admitted 'Zhu, Jin Chang' (Card: 203929)   at '2nd Flr Check Rm 02-19' (IN).    7/25/2018 9:10
2   Card Admitted   7/25/2018 9:34  Admitted 'Zhu, Jin Chang' (Card: 203929)   at '2nd Flr Check Rm 02-19' (IN).    7/25/2018 9:34
3   Card Admitted   7/25/2018 9:42  Admitted 'Klein, Erwin' (Card: 511268)   at '2nd Flr Check Rm 02-19' (IN).  7/25/2018 9:41
4   Card Admitted   7/25/2018 10:29 Admitted 'Tesis, Olga' (Card: 203047)   at '2nd Flr Check Rm 02-19' (IN).   7/25/2018 10:29

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Эта ссылка может быть полезна.Он решает точно такую ​​же проблему.

О регулярном выражении, которое вы будете использовать, вы можете использовать:

r".*Admitted\s+\'(?P<Name>[a-zA-Z, ]+)\' \(Card: (?P<digit>\d+)\).*"

Спасибо.

Пример трина это говорит, что вы можете сделать это с помощью одного регулярного выражения.Это было бы более полезным и чистым.

0 голосов
/ 10 июля 2019

Вы можете попробовать этот шаблон:

pattern = "Admitted\s+\'(?P<name>.*)\'.*\(Card\D*(?P<card_number>\d+)\)"
df['Message Text'].str.extract(pattern)

Выход:

             name card_number
0  Santos, Samuel      203532
1  Zhu, Jin Chang      203929
2  Zhu, Jin Chang      203929
3    Klein, Erwin      511268
4     Tesis, Olga      203047
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...