我在python3.x和shelve之间纠结着一个奇怪的问题。 其概念是,利用引理的形态形式来寻找合适的范式,并使用shelve。在
guessexpl
是搁置,ntrf
是键。
问题是,我有键:'\tk1gMnSc2[^:]*::a k1gMnPc1[^:]*:k:ci k1gMnPc6[^:]*:k:cích'
(定义形态形式)和ntrf in guessexpl
返回{
代码:
print('ntrf in expl',ntrf in guessexpl, 'ntrf in guesser',ntrf in guesser)
if ntrf in guessexpl:
print('print guessexpl[ntrf]')
print(guessexpl[ntrf])
在修补shelve
后,使用Python unpickler而不是C版本:
我得到的错误是:
ntrf in expl True ntrf in guesser True
print guessexpl[ntrf]
Traceback (most recent call last):
File "/usr/lib/python3.2/shelve.py", line 111, in __getitem__
value = self.cache[key]
KeyError: '\tk1gMnSc2[^:]*::a k1gMnPc1[^:]*:k:ci k1gMnPc6[^:]*:k:cích'
During handling of the above exception, another exception occurred:
Traceback (most recent cal
File "./scripts/lntrf2lpn_editing.py", line 363, in <module>
sys.exit(main(sys.argv))
File "./scripts/lntrf2lpn_editing.py", line 311, in main
print(guessexpl[ntrf])
File "/usr/lib/python3.2/shelve.py", line 114, in __getitem__
value = Unpickler(f).load()
File "/usr/lib/python3.2/pickle.py", line 834, in load
dispatch[key[0]](self)
File "/usr/lib/python3.2/pickle.py", line 1158, in load_long_binget
self.append(self.memo[i])
KeyError: -1493160213
可复制样品
>>> a['\tk1gMnSc2[^:]*::a k1gMnPc1[^:]*:k:ci k1gMnPc6[^:]*:k:cích'][0]
{'Soustružník': [((184, (('Azték', 'nM'),)), {'Soustružník'})], 'soustružník': [((2260, (('vlk', ''),)), {'soustružník', 'kovosoustružník'})]}
>>> a['\tk1gMnSc2[^:]*::a k1gMnPc1[^:]*:k:ci k1gMnPc6[^:]*:k:cích'][1]
{'oustružník': [((2260, (('vlk', ''),)), {'soustružník', 'kovosoustružník'}), ((184, (('Azték', 'nM'),)), {'Soustružník'})], 'kolomazník': [((2260, (('vlk', ''),)), {'kolomazník'})], 'Kolomazník': [((184, (('Azték', 'nM'),)), {'Kolomazník'})]}
说明:ntrf有dict列表。列表的重点是引理的长度。Dict由引理的结尾组成:[(范式组的频率,(范式组)),相关引理集]…范式组由范式和注释词组组成。在
老实说,我不知道发生了什么事。输入为utf-8。如果搁置文件被删除,一切正常。但这不是解决办法。在
目前没有回答
相关问题 更多 >
编程相关推荐