Menulis skrip untuk membaca beberapa file csv. Saya memiliki daftar 3 barcode yang berbeda. Setiap kode memiliki tiga file berbeda. Setiap kode memiliki awalan yang sama '5SvF9yM6ldXGRpBz'. Ini adalah bagian dari daftar kode batang yang lebih panjang.

Saya memiliki daftar direktori lain tempat barcode ditemukan. Agar skrip dapat berjalan, saya membutuhkan ketiga file

Tujuan saya adalah membangun kamus kode batang dan direktori yang berbeda. Saya mengalami masalah dengan output. Salah satu dari tiga barcode hilang. '5SvF9yM6ldXGRpBz1'. Saya pikir masalahnya adalah dengan fungsi enumerate di for loop.

 directories = ['C:/Desktop/5SvF9yM6ldXGRpBz1_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz1_SECOND.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_SECOND.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_SECOND.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz1_THIRD.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_THIRD.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_THIRD.csv']

barcodes = ['5SvF9yM6ldXGRpBz1',
'5SvF9yM6ldXGRpBz11',
'5SvF9yM6ldXGRpBz12',
'5SvF9yM6ldXGRpBz1',
'5SvF9yM6ldXGRpBz11',
'5SvF9yM6ldXGRpBz12',
'5SvF9yM6ldXGRpBz1',
'5SvF9yM6ldXGRpBz11',
'5SvF9yM6ldXGRpBz12']

#print(directories)
#print(barcodes)

barcodes = list(set(barcodes))
barcodes = [s for s in barcodes if "5SvF9yM6ldXGRpBz" in s] #Want to process codes with this prefix 
directories = list(set(directories))
#print(directories)
directories = [s for s in directories if "5SvF9yM6ldXGRpBz" in s]
#print(directories)

barcode_dirs_indexes =[]
for b_code in barcodes:
   #print(b_code)
   index = [i for i,x in enumerate(directories) if b_code in x] #I think the issue is here
   barcode_dirs_indexes.append(index)
   #print(barcode_dirs_indexes)

barcode_dirs = [[directories[x] for x in y] for y in barcode_dirs_indexes]

# only process barcode with 3 directories, i.e. the barcode has 3 files 
data_barcode_dir_indx = [i for i,x  in enumerate(barcode_dirs) if len(x) == 3 ]
data_barcode_dirs = [x for x in barcode_dirs if len(x) == 3]
#print(data_barcode_dir_indx)
#print(data_barcode_dirs)
complete_data_barcodes = [barcodes[x] for x in data_barcode_dir_indx]
print(complete_data_barcodes)
dir_file_dict = dict(zip(complete_data_barcodes, data_barcode_dirs)) 

Output dari dir_file_dict: Tidak ada barcode: 5SvF9yM6ldXGRpBz1

{'5SvF9yM6ldXGRpBz12': ['C:/Desktop/5SvF9yM6ldXGRpBz12_FIRST.csv', 
'C:/Desktop/5SvF9yM6ldXGRpBz12_THIRD.csv', 'C:/Desktop/5SvF9yM6ldXGRpBz12_SECOND.csv'], 
'5SvF9yM6ldXGRpBz11': ['C:/Desktop/5SvF9yM6ldXGRpBz11_FIRST.csv', 
'C:/Desktop/5SvF9yM6ldXGRpBz11_SECOND.csv', 'C:/Desktop/5SvF9yM6ldXGRpBz11_THIRD.csv']}
0
defjamvan 5 Maret 2020, 04:44

1 menjawab

Jawaban Terbaik

Anda dapat melakukan:

d = {}
for i,j in zip(barcodes, directories):
  if not d.get(i):
    d[i] = []
  d[i].append(j)

print(d)
1
Onyambu 5 Maret 2020, 02:06