14

我有一个非技术客户,他有一些分层产品数据,我将使用 Python 将这些数据加载到树结构中。该树具有可变数量的级别,以及每个级别的可变数量节点和叶节点。

客户已经知道产品的层次结构,并希望将所有内容放入 Excel 电子表格中供我解析。

我们可以使用什么格式让客户端轻松输入和维护数据,并且我可以使用 Python 的 CSV 轻松解析成树?为每个级别设置一列并非没有问题(特别是如果我们引入多种节点类型)

4

2 回答 2

15

对于未来的读者,我最终使用了基于列的层次结构,其中每一行都是对叶子的完整遍历。因此,您最终会得到与叶子一样多的行。

Electronics | Computers    | Laptops
Electronics | Computers    | Desktop
Electronics | Game Systems | Xbox
Electronics | Game Systems | PS3
Electronics | Game Systems | Wii
Electronics | MP3 Players  | iPod Shuffle
Clothing    | Menswear     | Pants         | Shorts
Clothing    | Menswear     | Pants         | Pajamas

在脚本中,Python 逐行、逐个单元格地遍历,同时跟踪当前行和前一行。由于您从左到右遍历,因此您从根到叶。如果当前行中的当前列与前一行中的当前列不同,那么我们一定已经向下一个新分支,我们将向树中添加一个新节点。

于 2013-07-27T21:08:01.337 回答
0

如果此解决方案中必须使用电子表格,则层次结构可以通过 Excel 端的缩进表示(行开头的空单元格),每个节点/叶一行。在 Python 方面,可以将它们解析为树结构(当然,需要过滤掉空行和其他一些异常)。节点类型可以在它自己的列上指定。例如,它甚至可以是第一个非空单元格。

我想,层次结构级别是有限的(比如说,最多 8 个级别),否则 Excel 根本不是一个好主意。

此外,还有一个名为 openpyxl 的库,它可以帮助直接读取 Excel 文件,而无需用户将它们转换为 CSV(它为整体方法增加了可用性)。

另一种方法是在第一个单元格中放置一个级别编号。该数字不应增加 2 或更多。

另一种方法是为每个节点使用一些 ID,每个节点叶子都需要指定父节点的 ID。但这不是很人性化。

于 2013-07-27T17:22:38.633 回答