为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用正向后视断言从“named”一词后面的字符串中提取子字符串

如何使用正向后视断言从“named”一词后面的字符串中提取子字符串

慕慕森 2021-12-16 16:39:22
我有一个来自推文的熊猫系列文本。这些推文是关于狗的。一些推文包含狗的名字。名称以下列方式显示。“......等等等等命名的名字。等等等等等等......”我需要的作品前后的字符数未知。我想提取name。我相信我需要使用正向后视断言和正则表达式的搜索选项。我查看了 re.search 的文档以及以下 SO 问题:如何提取两个标记之间的子字符串?和Regex 捕获了具有正面后视 (python) 的组,以及本教程https://www.rexegg.com/regex-lookarounds.html。我还是觉得卡住了。这是我到目前为止的两个想法:一个)tweet = 'This is a Shotokon Macadamia mix named Cheryl. Sophisticated af.'m = re.search('(?<=named)[A-Z][a-z]+', tweet)m.group(0)乙)s.str.extract(^named([A-Z][a-z])\.$)根据文档,A) 应该返回“Cheryl”,但我收到一个属性错误:AttributeError: 'NoneType' object has no attribute 'group'。B) 仅适用于一个系列,并非推文系列中的每个元素都包含“...命名名称”。结构体。我不确定如何将其合并到代码中,因此它返回 Cheryl。
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

Pythons 说m是 a 'NoneType' object因为正则表达式不匹配任何字符串,所以你不能从它的结果中提取一个组。为了获得正确的匹配,您应该在“named”之后添加一个空格。因此,只需尝试:

(?<=named )[A-Z][a-z]+

另见https://regex101.com/r/nZiAFN/1


查看完整回答
反对 回复 2021-12-16
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

以下正则表达式仅提取出现在命名字符串之后的名称:

m = re.search('(?<=named\s)(\w+)', tweet)


查看完整回答
反对 回复 2021-12-16
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信