-1

Я пытаюсь сопоставить два txt-файла, а затем сохраняя индекс совпадающих местоположений в словаре python под названием tmp.Нет вывода, сгенерированного при использовании словаря python

Теперь я пытаюсь напечатать содержимое между индексом начального и конечным индексом на основе словаря ..

Некоторых ключевых/значений отсутствовал в словаре, поэтому я использовал значение по умолчанию Но теперь, когда я пытаюсь печать нужного результата, используя линии [S: е] он дает мне пустой вывод

в то время как значения по умолчанию есть ..

Надежда я в состоянии объяснить себе ..

Пожалуйста, смотрите в коде. .

код типа = 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 филе 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 [(прод, 'END_INDEX')]] давал ключ раньше, но теперь, когда значение по умолчанию равно 99, оно должно взять его и дать мне некоторый результат, но результат не генерируется.

+1

Где находится 's' от последнего кода? –

+0

Не обращайте внимания на это. Мне пришлось перезагрузить два файла снова после цикла, а затем использовать строку [tmp [prod, 'start_index']: tmp [(prod, 'end_index')]], и она отлично работала – ashishashen

ответ

0

Что означает s среднее значение в line[s:tmp[(prod,'end_index')]]? Проследите его определение и учтите следующее поведение Python:

>>> l = [1,2,3] 
>>> print l[10:1] 
[] 

Теперь вы сможете найти свою ошибку.

+0

ум получил это. Мне пришлось перезагрузить два файла снова после цикла, а затем использовать строку [tmp [prod, 'start_index']: tmp [(prod, 'end_index')]], и это сработало просто отлично ... – ashishashen

Смежные вопросы