Извлеките имена после ключевых слов из строки

Здесь я пытаюсь вытащить имена в тексте после совпадения ключевого слова

Keywords = ['customer::name:', '- first name:', 'let me get you to a specialist. please tell us your first name', 'please tell us your first name']

Здесь имя должно быть вытащено после того, как любое ключевое слово встречается в строке

Данные Excel:

str1=
- Selections: U-verse TV > HSC - Inline Auth Uverse
Mindy has left the chat
You are being transferred, please hold...
Customer::Name: jhon henry

str2=
Adam has left the chat
You are being transferred, please hold...
- First Name: jennatee
tGuard Information >> Wireless Number: TG_NOT_FOUND *** Wireless BAN: TG_NOT_FOUND

str3=
Agent::[virtualAssistant.nina]: <div onclick = "window.inqFrame.Application.sendVALinkClicked(event);" >Let me get you to a specialist. Please tell us your first name.</div> 
Customer::karl
Once the installation is done, you can expect to receive the e-mail notication regarding all the details.

str4=
Let me get you to a specialist.<br /><br /> Please tell us your first name.</div>  ***  Customer::Max canon  ***  Agent::[virtualAssistant.nina]: <div onclick = "window.inqFrame.Application.sendVALinkClicked(even)

Вывод для каждой строки должен быть следующим:

для str1, [out]: Джон Генри.

для str2, [out]: jennatee.

для str3, [out]: karl.

для str4, [out]: Макс канон.

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

str=[str1,str2,str3]
m=re.search(r'[customer::name:|first name|let me get you to a specialist. please tell us your first name|please tell us your first name]', str)
m.groups()

Спасибо и привет

Ищет ли он только ограниченный набор идентификаторов (имен ключей) или может быть любое имя ключа, за которым следует значение? Я заметил, например, Agent::[virtualAssistant.nina] в str3 - так как он узнает, чтобы этого избежать? Конкретные целевые имена ключей или тип значения, например игнорирование значений, заключенных в квадратные скобки?

Dan 18.12.2018 15:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
63
1

Ответы 1

ты можешь попробовать это

#this pattern gives the next word after the match. You can add more match strings if you like
pattern=r'((?<=)(customer::name:|customer::|first name:|please tell us your first name)(.?\w+))'

print (re.findall(pattern,str.lower(string))[0][2])

Другие вопросы по теме