2017-05-04 82 views
1

我想從大約1000個csv文件名返回一個單元號列表。我可以閱讀它們,然後讓python刪除它們周圍的所有垃圾,並替換第五個字符來格式化它,我需要它。我想返回所有單位編號的列表,如['6726-0501','6826-1144']。我目前得到的是它逐個打印出單元號碼,而不是保存它們。我已經查看了以前的問題,但似乎無法獲得創建列表的模式,然後將單元號附加到列表並將該列表保存到變量中以工作。有誰知道一個簡單的修改這個輸出列表並保存列表供以後使用的好方法嗎?修改函數以輸出並保存列表

感謝,

羅賓

file_names = ['job_1106_unit_672600501_las_PN23074.LAS.csv', 'job_1108_unit_682601144_las_PN23072.LAS.csv'] 


def change(file_names): 
    for comps in file_names: 
     comps_of_comps = list(comps) 
     unit_num = comps_of_comps[14:23] #[672600501] 
     a = (unit_num[0:4]) #[6726] 
     b = (unit_num[5:9]) #[0501] 
     unit_num = a + list('-') + b #[6,7,2,6,-,0,5,0,1] 
     unit_num = ''.join(unit_num) #6726-0501 
     print unit_num 

change(file_names) 

回答

1

可以初始化一個新的列表,並追加到它,並返回該列表。像

file_names = ['job_1106_unit_672600501_las_PN23074.LAS.csv', 'job_1108_unit_682601144_las_PN23072.LAS.csv'] 
def change(file_names): 
    result = [] 
    for comps in file_names: 
     comps_of_comps = list(comps) 
     unit_num = comps_of_comps[14:23] #[672600501] 
     a = (unit_num[0:4]) #[6726] 
     b = (unit_num[5:9]) #[0501] 
     unit_num = a + list('-') + b #[6,7,2,6,-,0,5,0,1] 
     unit_num = ''.join(unit_num) #6726-0501 
     result.append(unit_num) 
    return result 

print change(file_names) 

OR

import re 

def change(file_names): 
    result = [] 
    for i in file_names: 
     s = re.match('.*unit_(.*)_las.*', i).group(1) 
     result.append(s[:len(s)/2]+"-"+s[(len(s)/2)+1:]) 
    return result 
+0

感謝我去的第一個選項,並且完美地工作。我感謝您的幫助。 – Robin