Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用另一个列表的元素筛选列表-Python_Python - Fatal编程技术网

使用另一个列表的元素筛选列表-Python

使用另一个列表的元素筛选列表-Python,python,Python,所以我有两个文件,一个包含条形码,另一个包含我要搜索的内容。 文件1的格式为: BC01 123 BC02 124 BC03 125 我的第二个文件的格式为: INV01 123axxxx INV02 123bxxxx INV03 124cxxxx INV04 125dxxxx 这两个文件都在“标记”和行的其余部分之间用制表符分隔 所以我现在要做的是用第一个文件中找到的条形码搜索第二个文件,并将它们输出到不同的文件中 因此,我想要的最终结果是3个单独的文件BC01、BC02、BC03,带有相应的

所以我有两个文件,一个包含条形码,另一个包含我要搜索的内容。 文件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创建字典:

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()
然后,
输出
字典将是:

{
'BC01':['INV01', 'axxxx', 'INV02', 'bxxxx']
'BC02':['INV03', 'cxxxx']
'BC03':['INV04', 'dxxxx']
}
现在遍历这个字典,用键的名称创建文件,并用相应的值写出文件的内容