我有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替代。
发布于 2021-09-23 14:16:07
在我看来你可以用
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]},并且将匹配a、b或c,即使多达两个大写字母被其他字母替换。
https://stackoverflow.com/questions/69298136
复制相似问题