【问题标题】:How to use regular expressions to extract the upper case and the alpha numeric characters in Python?如何使用正则表达式提取Python中的大写和字母数字字符?
【发布时间】:2020-06-09 14:05:33
【问题描述】:

我目前正在处理带有字符串的数据框。我期待将位置和财政年度提取为单独的列(系列)。有没有办法使用正则表达式来做到这一点:

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

【问题讨论】:

  • chennai 不等于 Chennai。您需要一些城镇规则。
  • 注明并修复
  • 至少没有位置规则,正如@Jan 提到的。如果只包含小写字母(匹配 chennai)除了只包含大写字母,那么 nepal 也会被正则表达式匹配,这不应该是这种情况。

标签: python regex dataframe


【解决方案1】:

使用下一个正则表达式,您可以获得包含数字的单词,您可以看到它的结果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)

【讨论】:

  • 此解决方案是否解决了您的问题@ganesh ghimire?
  • 不是真的,但我找到了其他方式来解决它。
  • 您实施了哪种解决方案?
  • 我并没有真正使用任何解决方案。我在预处理中更改了几个步骤以获得不同的结果。
猜你喜欢
  • 2019-05-15
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多