我如何使用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

下一篇: How to share and maintain multiple Fiddler scripts?