變換列表我想知道它有可能創建一個轉換此列表的功能:在數據結構
['music\n', ' extension=mp3\n', '\n', 'reports/INFOB131\n', ' extension=doc,docx,pdf\n', ' name_contains=INFOB131\n', ' max_size=100000\n', '\n', 'reports/INFOB132\n', ' extension=doc,docx,pdf\n', ' name_contains=INFOB132\n', ' max_size=100000\n', '\n', 'games\n', ' name_contains=SC2,Wesnoth\n', '\n', 'pictures/Namur\n', ' extension=jpeg\n', ' min_size=5000000\n', ' name_contains=cercle\n', '\n', 'pictures/autres\n', ' extension=jpeg\n', ' min_size=5000000']
已經從使用readlines方法()函數的文本文件得到。
到數據結構像這樣的:
data_config = [{'music' : {'extension':'mp3'}}, {'reports/INFOB131': {'extension': ['doc', 'docx','pdf'], 'name_contains':'INFOB131', 'max_size':100000}}, {'reports/INFOB132': {'extension': ['doc', 'docx','pdf'], 'name_contains':'INFOB132', 'max_size':100000}}]
我開始通過這些過程,以清理名單:
new_lines = []
for i in lines :
new_lines.append(str.strip(i, '\n'))
for i in new_lines:
if i == '':
new_lines.remove(i)
我得到這樣的:
['music', ' extension=mp3', 'reports/INFOB131', ' extension=doc,docx,pdf', ' name_contains=INFOB131', ' max_size=100000', 'reports/INFOB132', ' extension=doc,docx,pdf', ' name_contains=INFOB132', ' max_size=100000', 'games', ' name_contains=SC2,Wesnoth', 'pictures/Namur', ' extension=jpeg', ' min_size=5000000', ' name_contains=cercle', 'pictures/autres', ' extension=jpeg', ' min_size=5000000']
接下來,理論上我有這樣的想法:
創建一個將在列表中瀏覽的函數,如果「=」不在列表的元素中,則將其定義爲變量k。否則,該列表的元素將被添加到列表名爲pre_list和直到另外一個元素沒有「=」,在沒有遇到過,這pre_list進行更新,然後當新元素「=」,在它遇到一個字典containig變量鍵作爲列表,pre_list是分配給該鍵的元素。
def my_function(list_in_question, my_config_list =[]):
""" """
for i in list_in_question :
#it misses the first if for the situation in which the function stops
if not '=' in i:
my_config_list.append({key:pre_list})
i = key
pre_dict = {key:{}}
else:
pre_dict[key][i.split('=')[0]] = i.split('=')[1]
return myfunction(list_in_question[list_in_question.index(i):])
我想以遞歸的方式創建它。我有問題。其中之一是,我不知道我將如何阻止它...
是的,它是posibble。你嘗試了什麼? – furas
提出您嘗試的代碼,如果出現任何錯誤,請提供完整的錯誤消息(Traceback)。 – furas
我能想到的唯一代碼就是我在答案部分寫下的代碼,我想不出別的什麼。 – Manoa