首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Dataframe的Python模糊字符串搜索

基于Dataframe的Python模糊字符串搜索
EN

Stack Overflow用户
提问于 2021-09-23 10:17:55
回答 1查看 99关注 0票数 0

我有500条短信,我用pytesseract来提取所有文本。然后,我从pytesseract (熊猫中的dataframe)中搜索返回字符串(df‘string )中的单词'list’(search_list)。

使用下面的公式效果很好,

df['Found'] = df3['String'].str.findall('(' + '|'.join(search_list) + ')')

我想加入模糊搜索(regex?)因此,它也将寻找替代品。'g‘而不是'c’等,在OCR不太好的地方。我在下面找到了单行代码,但似乎无法成功地将其集成到上面。我该怎么做?

regex.findall("(ATAGGAGAAGATGATGTATA){s<=2}", "ATAGAGCAAGATGATGTATA", overlapped=True)

编辑:注释'String‘超过500个字符,而'search_list’中的条目只有10-15个字符长。这与我的原始代码很好,它只是不能应付任何替代。

Edit2 :示例:

String =‘家树独角兽jantern’s g w.有123台跑步机喷泉,1.5款风趣的cymbal洗发水

搜索=“崩溃的钹”,“独角兽灯笼”

我想两个‘崩溃cymbal’和‘独角兽灯笼’被发现使用模糊逻辑,因为1替代。

EN

回答 1

Stack Overflow用户

发布于 2021-09-23 14:16:07

在我看来你可以用

代码语言:javascript
复制
import regex
#...
rx = fr'(?:{"|".join(search_list)}){{s<=2:[A-Z]}}'
df["Found"] = df3["String"].apply(lambda r: regex.findall(rx, r, overlapped=True))

该模式将类似于(?:a|b|c|etc){s<=2:[A-Z]},并且将匹配abc,即使多达两个大写字母被其他字母替换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69298136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档