python正则表达式如何在一行中获取所有名称?

2024-04-29 06:59:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用regex从下面的行中获取名称??在

line #1==> 
Elector's Name: Surpam Badurubai Elector's Name: Madavimaru Elector's Name: Madavitannubai 

line #2==>
Elector's Name: GEDAM KARNU Elector's Name: GEDAM BHEEM BAI Elector's Name: Surpam Rajeshwar Rav

我试过了

^{pr2}$

它适用于第1行,但无法获取姓氏。 对于第2行,它只从姓氏中提取“supram Rajeshwar”,但实际上它有3个单词。在

我很感激,如果有人能帮我这个或建议我一个不同的方式来获得这些名字!!在


Tags: name名称lineregexbai姓氏electorrajeshwar
3条回答

看起来它更像是re.split的工作,根据"Elector's Name: "文本(前面或后面有可选空格),链接在列表理解中以过滤空字段:

[x for x in re.split("\s*Elector's Name:\s*",l1) if x]

通过您的示例,我得到了这些输出:

^{pr2}$

请注意,您也可以使用链接到str.split()str.split()来实现这一点:

[x.strip() for x in l1.split("Elector's Name:") if x]

您可以在没有regex的情况下使用^{{cd1>}拆分、从空白中剥离结果项并删除所有空项,从而实现此操作:

ss = ["Elector's Name: Surpam Badurubai Elector's Name: Madavimaru Elector's Name: Madavitannubai",
   "Elector's Name: GEDAM KARNU Elector's Name: GEDAM BHEEM BAI Elector's Name: Surpam Rajeshwar Rav"]
for s in ss:
    print(filter(None, [x.strip() for x in s.split("Elector's Name:")]))

请参见Python demo,输出:

^{pr2}$

如果您想研究regex,这里有一个可能的基于regex的解决方案:

^{pr3}$

请参见another Python demo

模式详细信息

  • Elector's Name:-一个文字子字符串
  • \s*-0+空白
  • ^{cd4>}-组1(此值由^{cd5>}返回):除换行符(含^{{cd6>},包括它们)以外的任何0+字符)尽可能少
  • ^{cd7>}一个正的前瞻,它需要0+空白,并且在它们之后^{cd1>}或立即位于当前位置右侧的字符串末尾(^{{cd9>})。

如果只需要获取所有名称,可以尝试使用分隔符.split()和分隔符Elector's Name:。比如:

names = line.split('Elector's Name:')
for i in names:
    print(i)

相关问题 更多 >