在串联后循环的第一次运行中删除最后一个字符不起作用

时间:2018-10-13 23:15:40

标签: python python-3.x

我正在尝试添加或删除缩进以更易读的方式显示数据,但是在每次串联后,第一次尝试从字符串中删除最后一个char无效。我确定我做错了什么,但看不到。

array = [['1.1', 'val 1.1'], ['1.2', 'val 1.2', [['1.2.1', 'val 1.2.1', [['1.2.1.1', 'val 1.2.1.1'], ['1.2.1.2', 'val 1.2.1.2', [['1.2.1.2.1', 'val 1.2.1.2.1'], ['1.2.1.2.2', 'val 1.2.1.2.2']]], ['1.2.1.3', 'val 1.2.1.3']]], ['1.2.2', 'val 1.2.2'], ['1.2.3', 'val 1.2.3']]], ['1.3', 'val 1.3']]

def pr_lo(array, indent):
    for el in array:
        print(indent, " ", el[0], ": ", el[1])
        if len(el) == 3:
            indent = indent + "-"
            pr_lo(el[2], indent)
    indent = indent[:-1]

pr_lo(array, "")

输出始终看起来相同:

   1.1 :  val 1.1
   1.2 :  val 1.2
-    1.2.1 :  val 1.2.1
--    1.2.1.1 :  val 1.2.1.1
--    1.2.1.2 :  val 1.2.1.2
---    1.2.1.2.1 :  val 1.2.1.2.1
---    1.2.1.2.2 :  val 1.2.1.2.2
---    1.2.1.3 :  val 1.2.1.3
--    1.2.2 :  val 1.2.2
--    1.2.3 :  val 1.2.3
-    1.3 :  val 1.3

1.11.21.3应该在同一行中,但是它们却不能以相同的方式出现。

1 个答案:

答案 0 :(得分:1)

您甚至不必担心不必通过以下方法设置索引来消除缩进:

def pr_lo(array, indent):
    for el in array:
        print(indent, " ", el[0], ": ", el[1])
        if len(el) == 3:
            pr_lo(el[2], indent + '-')
pr_lo(array, "")