Python可以';是否从2个文件中的字符串搜索中提取数据?
我使用这段代码来搜索和比较两个文件中的字符串Python可以';是否从2个文件中的字符串搜索中提取数据?,python,string,python-3.x,Python,String,Python 3.x,我使用这段代码来搜索和比较两个文件中的字符串 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 i
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个文件中有这样的字符串
{'[root]': 3, 'ht': 2, '.': 0, 'nn': 1}
{'nn': 1, 'ht': 2, '.': 0, '[root]': 3}
文件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'
回溯(最近一次呼叫最后一次):
文件“C:\Users\MAX\Documents\success.py”,第18行,在
提取的[L[2]]=节点[L[2]]
KeyError:'jj'
您的错误是一个错误。在节点中找不到密钥“jj”,因为它不存在于文件_1中的任何位置。不能在没有键的字典中调用值。如果要忽略此错误并将键值对添加到两个字典中,则需要。您的代码正在尝试访问节点dict中不存在的元素。