Использование функции перечисления с подстрокой / похожими строками - PullRequest
1 голос
/ 05 марта 2020

Попытка найти индекс строк в двух списках. Возникли проблемы, потому что строки похожи.

 directories = ['C:/Desktop/5SvF9yM6ldXGRpBz1.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12.csv']

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

Вывод ниже. Как получить первый штрих-код '5SvF9yM6ldXGRpBz1' = [0] вместо [0,1,2]

5SvF9yM6ldXGRpBz1
[0, 1, 2]
5SvF9yM6ldXGRpBz11
[1]
5SvF9yM6ldXGRpBz12
[2]

1 Ответ

2 голосов
/ 05 марта 2020

Вы должны рассмотреть следующее

from os.path import basename, splitext
[[i for k in barcodes if k==splitext(basename(j))[0]] for i,j in enumerate(directories)]

[[0], [1], [2]]

или можете использовать регулярное выражение:

import re
[[i for k in barcodes if re.sub('.*/(\w+).*','\\1',j)==k] for i,j in enumerate(directories)]
[[0], [1], [2]]
[[i for k in barcodes if re.sub('.*/|\\..*','',j)==k] for i,j in enumerate(directories)]
[[0], [1], [2]]
...