使用Excel电子表格来表示树状分层结构,以便通过Python CSV阅读器轻松parsing?
我有一个非技术客户,他有一些分层次的产品数据,我将用Python加载到树结构中。 该树具有可变数目的级别,并且在每个级别具有可变数量的节点和叶节点。
客户已经知道产品的层次结构,并希望将所有内容放入Excel电子表格中供我parsing。
我们可以使用什么格式,允许客户轻松地input和维护数据,而且我可以使用Python的CSV轻松地parsing为一棵树? 与每个级别的列都不是没有打嗝(特别是如果我们引入多个节点types)
对于未来的读者,我最终使用了一个基于列的层次结构,其中每行是完整的遍历叶。 所以你最终的行数和叶子一样多。
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逐行逐行地跟踪当前行和前一行。 既然你从左到右遍历你从根到叶。 如果当前行中的当前列与前一行中的当前列有所不同,那么我们必须已经下了一个新的分支,并且我们将向该树添加一个新的节点。
如果电子表格在这个解决scheme中是必须的,那么层次结构可以用Excel侧的缩进表示(行首的空单元格),每个节点/叶子一行。 在Python方面,可以将它们parsing为树结构(当然,需要过滤掉空行和其他一些exception)。 节点types可以在自己的列上指定。 例如,它甚至可能是第一个非空单元。
我想层级是有限的(比如,最多8级),否则Excel根本就不是好主意。
此外,还有一个名为openpyxl的库,可以帮助直接读取Excel文件,无需用户将其转换为CSV(它增加了整体方法的可用性)。
另一种方法是在第一个单元格中放置一个级别号码。 该数字不应该增加2或更多。
另一种方法是为每个节点使用一些ID,每个节点叶需要指定父母的ID。 但是这不是非常用户友好的。