我正在尝试匹配两个 txt 文件,然后将匹配位置的索引保存在名为 tmp 的 python 字典中。
现在我正在尝试根据字典打印开始索引和结束索引之间的内容..
字典中缺少一些键/值,所以我使用默认值但是现在当我尝试使用 line[s:e] 打印所需的结果时,它给了我一个空白输出
虽然有默认值..
希望我能解释一下自己..
请看代码..
代码类型 = Python
import re
content_file = open('/Users/ashishyadav/Downloads/pdfminer-20110515/samples/te.txt',"r")
product_file = open('/Users/ashishyadav/Desktop/AQ/te.txt',"r")
output = open("output.txt" , "w")
line = content_file.read().lower().strip()
tmp = {}
default=99
for k in tmp:
tmp[k]=default
prev=''
for prod in product_file:
for match in re.finditer(prod.lower().strip(), line):
prod = prod.replace("\r","")
prod = prod.replace("\n","")
if(prev!=''):
tmp[prev,'end_index']=match.start()
tmp[prod,'start_index']=match.start()
s=match.start()
e=match.end()
prev=prod
#print >>output, match.group(),"\t",
#print >>output, '%d:%d' % ( s, e),"\n",
#print >>output, tmp,"\n"
^^这是将索引位置保存到名为 tmp 的字典中
from collections import defaultdict
tmp = defaultdict(lambda:99,tmp)
print tmp
print tmp[('Steakhouse Filet Salad', 'end_index')]
print tmp[('FRIED PICKLES', 'end_index')]
print tmp[('TEXAS T-BONE', 'end_index')]
Steakhouse Filet Salad 的默认值现在是 99,因为它不在字典中
for prod in product_file:
for match in re.finditer(prod.lower().strip(), line):
prod = prod.replace("\r","")
prod = prod.replace("\n","")
print line[s:tmp[(prod,'end_index')]]
此打印行 [s:tmp[(prod,'end_index')]] 之前给出了一个 keyerror 但现在默认值为 99 它应该接受它并给我一些结果但没有生成输出。