[英]Appending lists of strings (nested lists) to existing list in a loop
我需要:遍歷文本文件列表,獲取不帶路徑或擴展名的文件名,將名稱拆分為列表,然后創建這些列表的列表。 文件名格式為A1_name_id_year.txt。
列表列表將用於導出到.csv文件。
這是我到目前為止獲得的代碼,適用於剝離文件名。
file_list = []
for file_name in glob.glob("C:/path/*.txt"):
file_list.append(file_name)
file_name_nopath = os.path.basename(file_name)
file_name_noext = [os.path.splitext(file_name_nopath)[0]]
這是我需要更改的部分:
big_list = []
while len(big_list)<len(file_list):
for n in file_name_noext:
file_name_elements = n.split("_")
big_list.append(file_name_elements)
print(big_list)
結果如下:
[['A1', 'name1', 'id1', 'year1']]
[['A2', 'name2', 'id2', 'year2'], ['A2', 'name2', 'id2', 'year2']]
[['A3', 'name3', 'id3', 'year3'], ['A3', 'name3', 'id3', 'year3'], ['A3', 'name3', 'id3', 'year3']]
...
但是,我正在嘗試獲取如下所示的列表列表:
[['A1', 'name1', 'id1', 'year1'], ['A2', 'name2', 'id2', 'year2'], ['A3', 'name3', 'id3', 'year3'], ...]
您不需要while len(big_list)<len(file_list)
。 使用list comprehension
,以下內容將為您工作:
big_list = [n.split("_") for n in file_name_noext]
上面的代碼行等效於:
big_list = []
for n in file_name_noext:
big_list.append(n.split("_"))
如果我很了解您想要做什么,那么下面就是您需要的全部代碼:
file_list = []
big_list = []
for file_name in glob.glob("C:/path/*.txt"):
name = os.path.splitext(os.path.basename(file_name))[0]
file_list.append(name)
for n in file_list:
big_list.append(n.split("_"))
也可以像下面這樣在for
循環中編寫它:
big_list = []
for file_name in glob.glob("C:/path/*.txt"):
name = os.path.splitext(os.path.basename(file_name))[0]
big_list.append(name.split("_"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.