从字符串中提取单词,知道单词中一个字符的索引(python)

2024-04-24 19:49:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用名为diff_match_patchmatch_main方法在可用发票号列表中查找最佳匹配,例如,如果用户以不同的格式(顺序、分隔符)提供发票号

match_main返回一个index,例如,如果模式是20170630/4072/00并且可能的发票号码列表是一个字符串20180923-5032-02 2016-6872-01 20170630-4072-00 20170620-4072-00 20091204-7914-00(因此发票号码以空格作为分隔符),它将返回30(从'correct'号码开始的第一个字符的索引是20170630-4072-00,我知道如何自动提取该号码(我知道数字的第一个字符的索引,我知道它在下一个空格之前结束)但是如果用户提供发票号码,但顺序不同(4072-00-20170630),它将返回39,这是在“正确”数字的中间,在这种情况下,我不知道如何提取该数字(我知道字符的索引在某处)在数字内部,数字从最后一个空格开始,在下一个空格之前结束)


Tags: 方法用户列表顺序main格式matchdiff
1条回答
网友
1楼 · 发布于 2024-04-24 19:49:27

如果我正确理解了您的问题,那么您需要做的是在match\u main返回的字符左侧找到最后一个分隔符字符,并在该字符右侧找到第一个分隔符。如果是这样的话,像这样的方法应该是可行的:

about_here = match_main(mystery_text, invoice, 0)
left_sep = mystery_text.rfind(' ', 0, about_here) + 1
right_sep = mystery_text.find(' ', about_here)
my_invoice = mystery_text[left_sep:right_sep]

这假设分隔符总是一个空格。您还需要检查边界条件:如果您的发票位于字符串的开头或结尾,rfindfind将返回-1。这是否与您要查找的大致相同

顺便说一句,塞尔吉奥苏格茨分裂字符串前面,然后做匹配。他是对的,但我假设您正在处理一个很长的输入字符串(因为您使用的是dif match patch),并且不想创建一个大数组来增加您的数字

相关问题 更多 >