2016-12-18 1 views
0

다음과 같이해야합니다 : 경로 또는 확장자없이 파일 이름을 가져 와서 이름을 목록으로 분할하고 그 목록을 작성해야합니다. . 파일 이름은 A1_name_id_year.txt 형식입니다.루프의 기존 목록에 문자열 (중첩 목록)을 추가하십시오.

목록 목록은 .csv 파일로 내보내는 데 사용됩니다.

이것은 내가 지금까지 가지고있는 코드이며 파일 이름을 제거하는 데 적합합니다. 다음과 같이

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) 

결과는 다음과 같습니다 :

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]] 

내가 변경해야하는 부분입니다 그러나

[['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

while len(big_list)<len(file_list)을 사용하십시오. list comprehension 사용하여, 다음은 당신을 위해 작동합니다 :

big_list = [] 

for n in file_name_noext: 
    big_list.append(n.split("_")) 

것은 당신이 뭘 원하는지 잘 이해한다면, 다음 전체 것 :

big_list = [n.split("_") for n in file_name_noext] 

위의 코드는 동일합니다 코드 당신이 필요로하는 :

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("_")) 
+0

고맙습니다! 이 코드는 필자가 필요로하는 것입니다. –

관련 문제