我正在尝试匹配两个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它应该接受并给我一些结果但是没有产生输出。
答案 0 :(得分:0)
s
中line[s:tmp[(prod,'end_index')]]
的含义是什么?追溯其定义并考虑下一个Python行为:
>>> l = [1,2,3]
>>> print l[10:1]
[]
现在你应该能找到你的错误了。