鉴于以下文本行
TOKYO-BLING.1 H02-AVAILABLE
TOKYO-BLING.1 H02-MIDDLING
TOKYO-BLING.1 H02-TOP
TOKYO-BLING.2 H04-USED
TOKYO-BLING.2 H04-AVAILABLE
TOKYO-BLING.2 H04-CANCELLED
WAY-VERING.1 H03-TOP
WAY-VERING.2 H03-USED
WAY-VERING.2 H03-AVAILABLE
WAY-VERING.1 H03-CANCELLED
Run Code Online (Sandbox Code Playgroud)
我想做一些解析以生成一些合理的分组。上面的列表可以分组如下
TOKYO-BLING.1 H02-AVAILABLE
TOKYO-BLING.1 H02-MIDDLING
TOKYO-BLING.1 H02-TOP
TOKYO-BLING.2 H04-USED
TOKYO-BLING.2 H04-AVAILABLE
TOKYO-BLING.2 H04-CANCELLED
WAY-VERING.2 H03-USED
WAY-VERING.2 H03-AVAILABLE
WAY-VERING.1 H03-TOP
WAY-VERING.1 H03-CANCELLED
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一种算法(或某种方法)可以扫描给定数量的文本并计算出文本可以按上述方式分组。显然每组可以进一步。我想我正在寻找一个很好的解决方案来查看短语列表并找出如何最好地按一些常见的字符串序列对它们进行分组。
我正在尝试在树视图中加载子项
+top
parent1
parent2
parent3
Run Code Online (Sandbox Code Playgroud)
首先,我只用父节点信息填充模型并将其附加到树视图,树看起来像上面那样。
self.mytreeview=QtGui.Qtreeview()
self.model=QtGui.QStandardItemModel(self.mytreeview)
def initialise_model(self):
'''Populate the model with parent nodes only'''
#open file and process each line, each file line has the parent node info
....
for file_name_entry in fileobject:
parent_item=QtGui.QStandardItem(str(file_name_entry).strip())
parent_item.setData("this is a parent",QtCore.Qt.TooltipRole)
self.model.appendRow(parent_item)
self.mytreeview.setModel(self.model)
Run Code Online (Sandbox Code Playgroud)
在这一点上,父母都没有任何孩子的信息。我接下来要做的是更新父节点,当用户点击父节点时(及时或延迟加载父子信息)。
因此,当单击父节点并发出信号时
QtCore.QObject.connect(self.ui.treeView, QtCore.SIGNAL('clicked(QModelIndex)'), self.update_model)
Run Code Online (Sandbox Code Playgroud)
update_model代码应该去获取该父节点的子节点,更新模型,刷新树并展开父节点。
def update_model(self,index):
'''Update the model by adding children to selected/clicked parent node only'''
parent_node=QtGui.QStandardItem(self.model.itemFromIndex(index))
parent_item_index=index.row()
#open the file called parent_node.txt and get all the child entries from the file...
child_index=0 …Run Code Online (Sandbox Code Playgroud)