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