2 つの txt ファイルを照合し、一致した場所のインデックスを tmp という python 辞書に保存しようとしています。
今、辞書に基づいて開始インデックスと終了インデックスの間のコンテンツを印刷しようとしています..
ディクショナリに一部のキー/値が欠落していたため、デフォルト値を使用しましたが、現在、行 [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')]
ステーキハウス フィレ サラダのデフォルト値は 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 であるため、それを取得して何らかの結果を得る必要がありますが、出力は生成されません。