Search code examples
python-3.xlistsubstringlist-comprehensionenumerate

Using the enumerate function with sub-string/similar strings


Attempting to find the index of strings in two lists. Having a problem because the strings are similar.

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

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

The output below. How do I get the first barcode '5SvF9yM6ldXGRpBz1' = [0] instead of [0,1,2]

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

Solution

  • You should consider the following

    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]]
    

    or you can use regular expression:

    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]]