我如何使用python
我最近在我的系统中安装了python-WikEdDiff
软件包。 我知道它是原始JavaScript WikEdDiff工具的一个python扩展。 我试图使用它,但我找不到任何文档。 我坚持使用WikEdDiff.diff()
。 我希望使用这个类的其他函数,比如getFragments()
和其他函数,但是在检查时会显示以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/WikEdDiff/diff.py", line 1123, in detectBlocks
self.getSameBlocks()
File "/usr/local/lib/python3.4/dist-packages/WikEdDiff/diff.py", line 1211, in getSameBlocks
while j is not None and self.oldText.tokens[j].link is None:
IndexError: list index out of range
在检查时,我发现对象中的tokens[]
结构保持为空,而它应该已经被初始化。
是否有一个初始化函数需要与默认构造函数分开调用? 或者,它是否与我传递给构造函数的`WikEdDiffConfig'配置结构有关?
你会得到这个错误,因为WikEdDiff
对象在diff()
内部被内部清除,如下面的代码所示:
def diff( self, oldString, newString ):
...
# Free memory
self.newText.tokens.clear()
self.oldText.tokens.clear()
# Assemble blocks into fragment table
fragments = self.getDiffFragments()
# Free memory
self.blocks.clear()
self.groups.clear()
self.sections.clear()
...
return fragments
如果你只需要这些片段,就像这样使用diff()
的返回变量:
import WikEdDiff as WED
config=WED.WikEdDiffConfig()
w = WED.WikEdDiff(config)
f = w.diff("abc", "efg")
# do whatever you want with f, but don't use w
print(' '.join([i.text+i.type for i in f]))
# outputs '{ [ (> abc- ) abc< efg+ ] }'
链接地址: http://www.djcxy.com/p/30319.html
上一篇: How do I use python