2017-05-04 94 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