Python pandas.str.findall()返回具有相同值但包含reduce字符的多个实例
所以我在findall()系列节目中遇到了熊猫的麻烦。目前,我正试图查看一份报告并检索所有电气部件。目前,报告要么是一行,要么是一段,并以标准化的方式提及组件。我正在使用这个代码Python pandas.str.findall()返回具有相同值但包含reduce字符的多个实例,python,regex,pandas,Python,Regex,Pandas,所以我在findall()系列节目中遇到了熊猫的麻烦。目前,我正试图查看一份报告并检索所有电气部件。目前,报告要么是一行,要么是一段,并以标准化的方式提及组件。我正在使用这个代码 failedCoFromReason =rlist['report'].str.findall(r'([CULJRQF]([\dV]{2,4}))',flags=re.IGNORECASE) 它返回组件,但也返回数字的重复值,如[('r919','919'),('r920','920')] 我希望它只是返回[('r9
failedCoFromReason =rlist['report'].str.findall(r'([CULJRQF]([\dV]{2,4}))',flags=re.IGNORECASE)
它返回组件,但也返回数字的重复值,如[('r919','919'),('r920','920')]
我希望它只是返回[('r919'),('r920')],但我正在努力让它工作。对于熊猫和正则表达式来说,这是一个非常新的概念,并且对如何搜索感到困惑。我尝试过贪婪搜索和非贪婪搜索,但没有成功。请参阅参考资料:
相当于应用于系列/索引中的所有元素
引用中说,“如果模式中存在一个或多个组,则返回一个组列表;如果模式中有多个组,则返回一个元组列表。”
因此,在本例中,您需要做的就是删除所有捕获括号,因为您只需要获得整个匹配:
rlist['report'].str.findall(r'[CULJRQF][\dV]{2,4},flags=re.I)
在其他情况下,当您需要保留组(以对其进行量化或使用替代方案)时,您需要将捕获组更改为:
rlist['report'].str.findall(r'(?:[CULJRQF](?:[\dV]{2,4})),flags=re.I)
不过,在这种情况下,它是相当多余的