在文本文件中搜索和捕获字典值
我现在遇到一个问题,就是从一个文本文件中提取特定的数据。
我有一个文本文件,里面包含一些信息。
比如说:
公司名称 GmbH, 测试街 24, 01000 示例城 客户编号 11111111 发票编号 22222
发票地址 公司名称 2 mbH, 测试2街 11, 01001 示例2城 订单编号 555555 订单日期 01.01.1999
所以,我有不同格式的类似信息。有些文件里有发票编号,有些文件里则写着“Inv. Number: 44444”。我想把这些信息都提取出来。我觉得可以通过创建一个字典来抓取这些信息,像这样:
`values_dict= {'Customer Number':'customer nr.', 'customer number',
'cus. nr.', ... , 'Order Number':'order number', 'Order nr' ,....}`
那么,我该如何使用这个字典从文本文件中提取特定的值呢?
我希望得到的输出是这样的:
订单编号:555555 客户编号:11111111 发票编号:22222 订单日期:01.01.1999
公司信息:公司名称 GmbH, 测试街 24, 01000 示例城 发票公司信息:公司名称 2 mbH, 测试2街 11, 01001 示例2城
1 个回答
0
Python中的re
模块支持正则表达式,这让你可以根据特定的模式来搜索、匹配或拆分字符串。简单来说,正则表达式就是一种用来描述字符串规则的工具,可以帮助你找到想要的内容。想了解更多,可以查看Python re模块的官方文档。
import re
# Your dictionary of keys with their possible variations
values_dict = {
'Customer Number': ['Customer Nr.', 'customer number', 'cus. nr.', 'Customer Number'],
'Order Number': ['Order number.', 'Order nr', 'order number', 'Order Number'],
'Invoice Number': ['Invoice Nr.', 'Inv. Number:', 'invoice number', 'Invoice Number'],
'Order Date': ['Order Date'],
'Company Information': ['Company Name'],
'Invoice Company Information': ['Invoice Adress Company Name'] # Add more variations as needed
}
# Function to extract information based on the dictionary
def extract_information(text, values_dict):
results = {}
for key, variations in values_dict.items():
for variation in variations:
pattern = rf"{variation}[:]?[\s]*(.*)"
match = re.search(pattern, text, re.IGNORECASE)
if match:
results[key] = match.group(1).strip()
break
return results
text = """Company Name GmbH, Teststraße 24 , 01000 Sampleort
Customer Nr. 11111111
Invoice Nr. 22222
Invoice Adress Company Name 2 mbH, Test2straße 11, 01001 Sample2ort
Order number. 555555
Order Date 01.01.1999"""
info = extract_information(text, values_dict)
for key, value in info.items():
print(f"{key}: {value}")