如何调整水果金额提取逻辑,按文本出现顺序排序并修正正则问题
发票文本水果金额提取问题
核心问题
- 提取结果按
fruit_words列表顺序返回,需调整为按目标文本中水果名称首次出现的顺序排序 - 误提取总金额(如
12.196,51这类非水果对应的金额),需排除 - 尝试将
fruit_words整合到正则表达式时触发unbalanced parenthesis括号不匹配错误;测试另一发票文本时仅提取到水果名称,未获取对应金额值
原代码片段
水果名称列表
fruit_words = ['Appels', 'Ananas', 'Peen Waspeen', 'Tomaten Cherry', 'Sinaasappels', 'Watermeloenen', 'Rettich', 'Peren', 'Peen', 'Mandarijnen', 'Meloenen', 'Grapefruit']
提取函数
def total_fruit_cost(file_name): fruit_cost_found = [] single_fruit = [fruit for fruit in fruit_words] for fruit in single_fruit: m = re.findall(regex_fruit_cost(fruit), file_name) if m: fruit_cost_found.append(m) return next(list(item for sublist in fruit_cost_found for item in sublist))
正则函数
def regex_fruit_cost(subst): return r"(?<=" + subst + r").*?(?P<number>[0-9,.]*) "
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

