Что именно я делаю не так с пробелами в этом регулярном выражении Python? - PullRequest
0 голосов
/ 30 марта 2020
text = '''
Person PicTurner, Helen  Email  Dean    (808) 739-8399  x8399       Wesselkamper Science Center Room 116
Person PicWeichhaus, Michael  Email     Assistant Professor (808) 735-4286  x4286       Wesselkammper Science Center Room 107
Person PicSpeck, Mark  Email    Assistant Professor in Data Scientists  (808) 739-7496  x7496       Tredtin Hall
Person PicShimoda, Lori Email   Research Associate  (808) 739-8570  x8570       Henry Hall 8
Person PicKeahi-Wood, Kahoalii  Email   Cultural Engagement Specialist  (808) 739-7481  x7481       Wesselkamper Science Center Room 105
Baker, Jonathan  Email  Assistant Professor and Howard Hughes Project Manager   (808) 739-8363  x8363       Wesselkamper Science Center Room 110
Person PicCarter, David  Email  Associate Professor (808) 739-8352  x8352       Henry Hall 5
Person PicKandel, Frederique  Email     Assistant Professor (808) 739-8376  x8376       Henry Hall 1
Corcoran, Hilary  Email     Instructional Laboratory and Instrumentation Manager    (808) 440-4282  x4282       Henry Hall 1
Biology  Go to webpage          (808) 735-4808  x4808   (808) 739-4618  Wesselkamper Science Center 101
Person PicTurner, Helen  Email      Dean of Natural Science and Mathematics Division    (808) 739-8399  x8399       Wesselkamper Science Center Room 116
Baker, Jonathan Email   Assistant Professor and Howard Hughes Project Manager   (808) 739-8363  x8363       Wesselkamper Science Center Room 110
Person PicWright, Claire  Email     Associate Professor, Clinical   (808) 739-8343  x8343       Wesselkamper Science Center Room 106
Person PicDohm, Michael  Email  Associate Professor (808) 739-8543  x8543       Henry Hall 6
Person PicTrapido-Rosenthal, Henry  Email   Associate Professor (808) 735-4808  x4808       Wesselkamper Science Center Room 104
Person PicNaeole, Chrystie  Email   Assistant Professor and Special Projects Coordinator    (808) 739-8551  x8551       Wesselkamper Science Center Room 105
Person PicCogbill, Jolene  Email    Assistant Professor (808) 739-4630  x4630       Wesselkamper Science Center Room 108
Person PicCrocker, John  Email      Adjunct              
Chemistry       (808) 735-4806  x4806   (808) 440-4283  Wesselkamper Science Center 103
Person PicTerem, Bulent  Email      Professor   (808) 735-4806  x4806       Wesselkamper Science Center Room 103
Person PicKawakami, Joel  Email     Professor   (808) 739-8576  x8576       Henry Hall 4
Person PicJensen, Janet  Email      Senior Lecturer (808) 735-4858  x4858       Wesselkamper Science Center Room 104
Environmental Studies  Go to webpage        (808) 735-4751  x4751   (808) 739-4618  Wesselkamper Science Center Room 108
Person PicGrabowsky, Gail  Email    Associate Professor (808) 735-4834  x4834       Wesselkamper Science Center Room 108
Forensic Science  Go to webpage         (808) 440-4204  x4204   (808) 440-4278  Wesselkamper Science Center 115
Person PicGutierrez, Carlos  Email      Lecturer    (808) 739-7451  x7451       Henry Hall 3
Person PicCarter, David Email   Director    (808) 739-8352  x8352       Henry Hall 5
Person PicPerrault, Katelynn  Email     Assistant Professor (808) 440-4209  x4209       Henry Hall 2
Mathematics         (808) 739-4682  x4682   (808) 440-4278  Wesselkamper Science Center 109
Dohm, Sheryl  Email     Senior Lecturer (808) 739-8561  x8561       Wesselkamper Science Center 105
Person PicWong, Chock Email     Associate Professor (808) 739-4682  x4682       Wesselkamper Science Center Room 109
Physics         (808) 739-4681  x4681   (808) 440-4278  Wesselkamper Science Center 116
Person PicCochran, Matthew  Email   Associate Professor (808) 739-8361  x8361       Henry Hall 7
'''

Я пытаюсь использовать re.findall (), чтобы получить этот список:

['PicTurner, Helen  Email',
 'PicWeichhaus, Michael  Email',
 'PicSpeck, Mark  Email',
 'PicShimoda, Lori Email',
 'PicKeahi-Wood, Kahoalii  Email',
 'PicCarter, David  Email',
 'PicKandel, Frederique  Email',
 'PicTurner, Helen  Email',
 'PicWright, Claire  Email',
 'PicDohm, Michael  Email',
 'PicTrapido-Rosenthal, Henry  Email',
 'PicNaeole, Chrystie  Email',
 'PicCogbill, Jolene  Email',
 'PicCrocker, John  Email',
 'PicTerem, Bulent  Email',
 'PicKawakami, Joel  Email',
 'PicJensen, Janet  Email',
 'PicGrabowsky, Gail  Email',
 'PicGutierrez, Carlos  Email',
 'PicCarter, David Email',
 'PicPerrault, Katelynn  Email',
 'PicWong, Chock Email',
 'PicCochran, Matthew  Email']

Я пытался использовать следующий код:

print(re.findall(r'Pic\w+\, \w+ \sEmail', text))

['PicTurner, Helen  Email', 
'PicWeichhaus, Michael  Email', 
'PicSpeck, Mark  Email', 
'PicCarter, David  Email', 
'PicKandel, Frederique  Email', 
'PicTurner, Helen  Email', 
'PicWright, Claire  Email', 
'PicDohm, Michael  Email', 
'PicNaeole, Chrystie  Email', 
'PicCogbill, Jolene  Email', 
'PicCrocker, John  Email', 
'PicTerem, Bulent  Email', 
'PicKawakami, Joel  Email', 
'PicJensen, Janet  Email', 
'PicGrabowsky, Gail  Email', 
'PicGutierrez, Carlos  Email', 
'PicPerrault, Katelynn  Email', 
'PicCochran, Matthew  Email']

Это код, который я получаю. Я пропускаю 3 значения, особенно те, которые имеют ровно один пробел после фамилии и до 'Email'

Используя этот код, я могу вернуть только пропущенные значения.

print(re.findall(r'Pic\w+\, \w+\sEmail', text))

['PicShimoda, Lori Email', 
'PicCarter, David Email', 
'PicWong, Chock Email']

Что именно я делаю не так? Похоже, что первый код, который я попытался, по сути говорит: «найдите все шаблоны, которые имеют ровно один пробел после фамилии, за которым следует любое количество пробелов». Похоже, что 0 пробелов, которые, по сути, представляют собой 3 пропущенных значения, также должны быть включены.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020
print(re.findall(r'Pic\w+\, \w+\s*Email', text))

\s* означает, что после фамилии оно будет соответствовать нулю или более пробел (\s)

0 голосов
/ 30 марта 2020

Попробуйте:

print(re.findall(r'Pic\w+\, \w+\s+Email', text))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...