Python无法从2个文件中的字符串搜索中提取数据?

时间:2017-01-25 18:53:31

标签: python string python-3.x

我使用此代码搜索和比较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'

1 个答案:

答案 0 :(得分:1)

您的错误是KeyError。在节点中找不到键'jj',因为它不存在于file_1中的任何位置。您无法在没有键的字典中调用值。如果您想忽略此错误并将键值对添加到两个词典,则需要explicity handle for this