我有一系列来自tweets的文字。推特是关于狗的。一些推特上有狗的名字。名称以以下方式显示。“。。。呜呜呜呜叫名字。布拉布拉布拉布拉布拉布拉…“之前和之后的作品我需要未知的字符数。我想提取名称。你知道吗
我相信我需要使用肯定的lookback断言和regex的搜索选项。我已经看了文件检索以及以下SO问题:How to extract the substring between two markers?和Regex captured groups with positive lookbehind (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)只适用于一个系列,而不是tweet系列中的每个元素都包含“。。。命名为名称“结构。我不知道如何将它合并到代码中,所以它返回Cheryl。你知道吗
以下正则表达式仅提取出现在命名字符串之后的名称:
Pythons说
m
是'NoneType' object
,因为regex与任何字符串都不匹配,所以不能从结果中提取组。为了得到正确的匹配,你应该在“named”后面加一个空格。因此,只需尝试:另见https://regex101.com/r/nZiAFN/1
相关问题 更多 >
编程相关推荐