python - 从给定格式中提取所需的名称
问题描述
我有一个包含数据的文本文件,如下所示。我必须从中提取一些必需的名称。我正在尝试下面的代码,但没有得到所需的结果。
该文件包含以下数据:
Leader : Tim Lee ; 34567
Head\Organiser: Sam Mathews; 11:53 am
Head: Alica Mills; 45612
Head\Secretary: Maya Hill; #53190
Captain- Jocey David # 45123
Vice Captain:- Jacob Green; -65432
我正在尝试的代码:
import re
pattern = re.compile(r'(Leader|Head\\Organiser|Captain|Vice Captain).*(\w+)',re.I)
matches=pattern.findall(line)
for match in matches:
print(match)
预期输出:
Tim Lee
Sam Mathews
Jocey David
Jacob Green
解决方案
import re
line = '''
Leader : Tim Lee ; 34567
Head\Organiser: Sam Mathews; 11:53 am
Head: Alica Mills; 45612
Head\Secretary: Maya Hill; #53190
Captain- Jocey David # 45123
Vice Captain:- Jacob Green; -65432'''
pattern = re.compile(r'(?:Leader|Head(?:\\Organiser|\\Secretary)?|Captain|Vice Captain)\W+(\w+(?:\s+\w+)?)',re.I)
matches=pattern.findall(line)
for match in matches:
print(match)
解释:
(?: : start non capture group
Leader : literally
| : OR
Head : literally
(?: : start non capture group
\\Organiser : literally
| : OR
\\Secretary : literally
)? ! end group, optional
| : OR
Captain : literally
| : OR
Vice Captain : literally
) : end group
\W+ : 1 or more non word character
( : start group 1
\w+ : 1 or more word char
(?: : non capture group
\s+ : 1 or more spaces
\w+ : 1 or more word char
)? : end group, optional
) : end group 1
给定示例的结果:
Tim Lee
Sam Mathews
Alica Mills
Maya Hill
Jocey David
Jacob Green
推荐阅读
- c - char指针数组指向函数参数的问题
- sql - MS Access 通过查询下拉列
- uwp - 使用应用程序包中的应用程序在 HKCU 中编辑注册表项
- android - 如何随机化从 Firebase 数据库中获取的项目?
- java - Swagger-UI 不显示来自不同模块的控制器?
- python - 如何以列表理解形式编写以下代码?
- c++ - 仅使用按位运算反转(翻转)数字的最后 n 位
- c# - 从 Unity 到 Firebase 的简单图像上传不起作用
- reactjs - 酶改变另一个输入字段
- xamarin.forms - 无法使用 DevExpress XPO 将 Xamarin Forms 项目构建到 iOS