我使用此代码搜索和比较2个文件中的字符串
fsig = open('file1.txt', 'r', encoding="utf8")
fresult = open('file2.txt', 'r' , encoding="utf8")
node = {}
for line in fsig:
L = line.split()
if(L[0] == 'v'):
node[L[2]] = int(L[1])
extracted = {}
for line in fresult:
L = line.split()
if(L!=[]):
if(L[0] == 'v' and L[2] not in extracted):
extracted[L[2]] = node[L[2]]
print(node)
print(extracted)
我在这样的2个文件中有字符串。
档案1
v 0 .
v 1 nn
v 2 ht
v 3 [root]
e 1 0 punctuation
e 3 1 root
e 3 2 root
文件2
t # 17
v 0 ht
v 1 [root]
e 1 0 root
t # 7
v 0 nn
t # 8
v 0 [root]
t # 5
v 0 ht
t # 6
v 0 .
当我运行程序时,它会显示这样的输出。
{'[root]': 3, 'ht': 2, '.': 0, 'nn': 1}
{'nn': 1, 'ht': 2, '.': 0, '[root]': 3}
如果我像这样更改数据文件2
t # 52
v 0 jj
v 1 prp$
v 2 nn
v 3 nnp
v 4 vbz
v 5 .
v 6 prp
v 7 vbp
v 8 [root]
v 9 ht
e 2 0 adjectival
e 2 1 possession
e 4 2 direct
e 4 3 nominal
e 7 4 clausal
e 7 5 punctuation
e 7 6 nominal
e 8 7 root
e 8 9 root
e 9 9 null
t # 53
v 0 prp$
v 1 nn
v 2 nnp
v 3 vbz
v 4 .
v 5 prp
v 6 vbp
v 7 [root]
v 8 ht
e 1 0 possession
e 3 1 direct
e 3 2 nominal
e 6 3 clausal
e 6 4 punctuation
e 6 5 nominal
e 7 6 root
e 7 8 root
e 8 8 null
为什么会显示此错误?
Traceback (most recent call last):
File "C:\Users\MAX\Documents\success.py", line 18, in <module>
extracted[L[2]] = node[L[2]]
KeyError: 'jj'
答案 0 :(得分:1)
您的错误是KeyError。在节点中找不到键'jj',因为它不存在于file_1中的任何位置。您无法在没有键的字典中调用值。如果您想忽略此错误并将键值对添加到两个词典,则需要explicity handle for this。