将字符串列表(嵌套列表)附加到循环中的现有列表

时间:2016-12-18 23:10:59

标签: python list list-comprehension

我需要:查看文本文件列表,获取没有路径或扩展名的文件名,将名称拆分为列表并创建这些列表的列表。文件名的格式为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'], ...]

1 个答案:

答案 0 :(得分:0)

您无需使用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("_"))