使用另一个列表的元素过滤列表 - Python

时间:2014-04-02 00:06:41

标签: python

所以我有两个文件,一个包含条形码,另一个包含我想要搜索的内容。 文件1的格式为:

BC01 123

BC02 124

BC03 125

我的第二个文件格式为:

INV01 123axxxx

INV02 123bxxxx

INV03 124cxxxx

INV04 125dxxxx

两个文件都在“标记”和行的其余部分之间以制表符分隔。

所以我目前正在尝试做的是使用第一个文件中找到的条形码搜索第二个文件并将它们输出到单独的文件中。

所以我想要的最终结果是3个单独的文件BC01,BC02,BC03以及相应的库存编号,条形码被截断,例如:

文件BC01会读取:

INV01

AXXXX

INV02

bxxxx

我现在所拥有的是两个文件的单独制表符分隔部分的列表:BCID,BCnumber,INVID和INVnumber,我不太清楚如何从这里开始。

1 个答案:

答案 0 :(得分:2)

从file_1创建字典:

barcodes = {}
with open(file_1) as file_one:
    csv_reader = csv.reader(file_one, delimiter='\t')
    for row in csv_reader:
        barcodes[row[1]] = row[0]
file_one.close()

使用此选项在第二个文件中搜索并构建输出映射:

output = defaultdict(list)
with open(file_2) as file_two:
    csv_reader = csv.reader(file_two, delimiter='\t')
    for row in csv_reader:
        key = row[1][:2]
        output[barcodes[key]].append(row[0])
        output[barcodes[key]].append(row[1][2:])
file_two.close()

output字典将是:

{
'BC01':['INV01', 'axxxx', 'INV02', 'bxxxx']
'BC02':['INV03', 'cxxxx']
'BC03':['INV04', 'dxxxx']
}

现在遍历这个字典,使用键的名称创建文件,并用相应的值写出文件的内容。