我正在尝试按特定顺序打印两个列表(l,val)中的项目。我的代码就在这里..
我尝试将(。)之后的部分循环到一个变量,但是在执行期间它会更新。
在打印中间带有a.b1 /(.)的项目时,需要像我一样在(。)处进行滑动,并且(。)之后的部分应该打印更多的空格,直到itwm的第一部分仍然存在同样,例如,在a.b1 /,a.b2 /,a.b3 /等项目的情况下,首先是' a'应该打印并且距离左边b1,b2,b3的距离相等,应该打印并且最后一次打印。应首先以相同的距离打印' a'离开了。
我的代码就在这里。
l = ['a1','b2','c3','d4','e5','a.b1/','a.b2/','a.b3/','e5','f6','g7','q.a1/','q.a2/','q.a3/','h','i','j']
val = ['None','None','None','None','None','None','None','None','None','None','None','None','None','None','None','None','None','None','None']
for i in range(0,len(l)):
if l[i][-1:] == '/':
l_p = l[i].split('.')[0]
l_c = (l[i].split('.')[1]).strip('/')
print(' '+'%s'%l_p+' \n')
print(' '+l_c+' '+'%s'%val[i]+' '+l_c+' '+'\n')
print(' '+'%s'%l_p+' \n')
else:
print(' '+l[i]+' '+'%s'%val[i]+' '+l[i]+' '+'\n')
我的出局是
a1 None a1
b2 None b2
c3 None c3
d4 None d4
e5 None e5
a
b1 None b1
a
a
b2 None b2
a
a
b3 None b3
a
e5 None e5
f6 None f6
g7 None g7
q
a1 None a1
q
q
a2 None a2
q
q
a3 None a3
q
h None h
i None i
j None j
我的预期输出是:
a1 None a1
b2 None b2
c3 None c3
d4 None d4
e5 None e5
a
b1 None b1
b2 None b2
b3 None b3
a
e5 None e5
f6 None f6
g7 None g7
q
a1 None a1
a2 None a2
a3 None a3
q
h None h
i None i
j None j
答案 0 :(得分:1)
您必须跟踪您所在的类别,即点之前的部分。如果你不想再次在每个街区的末尾打印出类别,那会更容易,但是我们走了:
prev_cat = ""
for i, item in enumerate(l): #iterate over the list
if item.endswith("/"): #identify category and category element, set tabulator
curr_cat, printitem = item[:-1].split(".")
tabulator = " "
else:
curr_cat, printitem, tabulator = "", item, ""
#identify category, changes in category, print categories
if curr_cat and (curr_cat != prev_cat):
if prev_cat:
print(prev_cat)
print(curr_cat)
elif not curr_cat and prev_cat:
print(prev_cat)
prev_cat = curr_cat
#print category items from both lists
print(tabulator + " ".join([printitem, val[i], printitem]))
if curr_cat: #close the last category, if necessary
print(curr_cat)
如果val
有足够的元素可供打印或l
包含字符串,或者l
中的每个字符串实际上以/
结尾,则不会检查恰好包含两个由一个点分隔的部分。这被视为您问题指定的给定。