我是編程新手,我正在嘗試將輸入的字母和方括號(即 [ 和 ])字串轉換為字母和串列的串列。方括號標識串列的開始和結束位置,而每個字母轉換為相應串列的一個元素。
str2list(‘[abc]’)應該回傳[‘a’,‘b’,‘c’]
str2list(‘[a[bc]]’)應該回傳[‘a’,[‘b’,‘c’]]
我的嘗試是:
嘗試 1:
def str2list(s):
list1=[]
list1[:0]=s
# s.replace(',', '')
# a = s.split(",")
list1.append([])
return list1
str2list('[abc]')
嘗試 2:
def str2list(s):
list1=[]
list1[:0]=s
return list1
str2list('[abc]')
但是,我沒有得到所需的輸出。我被困住了。有人可以幫助我并告訴我需要做什么嗎?
uj5u.com熱心網友回復:
你只需要仔細考慮 if-else 條件:
def str2list(my_str):
out = []
for s in my_str.split('['):
if ']' in s[:-1]:
s1 = s.split(']')
s1 = [list(s1[0])] list(s1[1])
elif s[-1:] == ']':
s1 = [list(s.strip(']'))]
else:
s1 = list(s)
out.extend(s1)
return out
print(str2list('[wewr[sfs]]'))
print(str2list('[wewr[sfs]da]'))
print(str2list('[wewr[sfs]da[ds]]'))
print(str2list('[wewr[sfs]da[ds][dfd]]'))
輸出:
['w', 'e', 'w', 'r', ['s', 'f', 's']]
['w', 'e', 'w', 'r', ['s', 'f', 's'], 'd', 'a']
['w', 'e', 'w', 'r', ['s', 'f', 's'], 'd', 'a', ['d', 's']]
['w', 'e', 'w', 'r', ['s', 'f', 's'], 'd', 'a', ['d', 's'], ['d', 'f', 'd']]
uj5u.com熱心網友回復:
def s2l(i):
while True:
n = i.next()
#print 'n =', n
if n == '[':
yield [x for x in s2l(i) ]
elif n == ']':
return
else:
yield n
res = s2l(iter("[ab[123]cd]")).next()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375907.html
