如何使用正则表达式提取Python中的大写字符和字母数字字符?

2024-05-19 11:02:25 发布

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

我目前正在处理一个带有字符串的数据帧。我期待着提取位置和财政年度作为单独的列(系列)。是否有一种使用正则表达式的方法:

Filename                      
KATH FY19 nepal
Nepal BIRATNA FY2020
India DEL   FY18
HQ chennai FiscalYear2020

预期:

Filename                        Location             FiscalYear
KATH FY19 nepal                 KATH                 FY19
Nepal BIRATNA FY2020            BIRATNA              FY2020
India DEL   FY18                DEL                  FY18
HQ chennai FiscalYear2020       chennai              FiscalYear2020

Tags: 数据字符串filenamedelnepalindiahqchennai
1条回答
网友
1楼 · 发布于 2024-05-19 11:02:25

使用下一个正则表达式,您可以获得包含数字的单词,您可以看到它的结果here

([A-Za-z]+[\d@]+[\w@]*|[\d@]+[A-Za-z]+[\w@]*)

如果要通过正则表达式仅查找大写单词,可以尝试下一个:

\b[A-Z]+\b

在python中:

import re
text = "KATH FY19 nepal Nepal BIRATNA FY2020 India DEL   FY18 HQ chennai FiscalYear2020"    
fy = re.findall(r'([A-Za-z]+[\d@]+[\w@]*|[\d@]+[A-Za-z]+[\w@]*)', text)
loc = re.findall(r'\b[A-Z]+\b', text)
print(fy, loc)

输出:

['FY19', 'FY2020', 'FY18', 'FiscalYear2020'] ['KATH', 'BIRATNA', 'DEL', 'HQ']

但在您的示例中,这将选择HQ作为一个位置,因此我将采用更智能的方法,例如使用spacy库实体识别来验证位置或仅获取位置

import spacy

nlp = spacy.load('en_core_web_md')
doc = nlp(text)

entities = ['GPE']
locations = []
for ent in doc.ents:
   if ent.label_ in entities:
      locations.append(ent.text)

相关问题 更多 >

    热门问题