修改输出和保存列表的功能

时间:2017-05-04 07:11:55

标签: python function file-management

我正在尝试从大约1000个csv文件名返回单元号列表。我可以读取它们然后获取python来删除周围的所有垃圾并替换第5个字符以格式化它我是如何完成的。我想返回所有单元号的列表,如['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 个答案:

答案 0 :(得分: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