簡體   English   中英

在循環中將字符串列表(嵌套列表)追加到現有列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM