0

I have a list of strings with two different prefixes that I would like to remove.

 example_list=[
    '/test1/test2/test3/ABCD_1',
    '/test1/test2/test3/ABCD_2',
    '/test1/test2/test3/ABCD_3',
    '/test1/test4/test5/test6/ABCD_4',
    '/test1/test4/test5/test6/ABCD_5',
    '/test1/test4/test5/test6/ABCD_6',
    '/test1/test4/test5/test6/ABCD_7']

I would like the new list to look like:

  example_list=[
    'ABCD_1',
    'ABCD_2',
    'ABCD_3',
    'ABCD_4',
    'ABCD_5',
    'ABCD_6',
    'ABCD_7']

I was trying something like this, but keep running into errors.

for i in example_list:
    if i.startswith('/test1/test2/test3/'):
        i=i[19:]
    else:
        i=i[25:]
1
  • try this, [x.split("/")[-1] for x in example_list] Commented Jul 17, 2020 at 11:27

3 Answers 3

3
example_list = [path.split('/')[-1] for path in example_list]

Output:

['ABCD_1', 'ABCD_2', 'ABCD_3', 'ABCD_4', 'ABCD_5', 'ABCD_6', 'ABCD_7']
Sign up to request clarification or add additional context in comments.

Comments

2

given that these are all filesystem paths i suggest you use pathlib:

from pathlib import Path

example_list = [
    '/test1/test2/test3/ABCD_1',
    '/test1/test2/test3/ABCD_2',
    '/test1/test2/test3/ABCD_3',
    '/test1/test4/test5/test6/ABCD_4',
    '/test1/test4/test5/test6/ABCD_5',
    '/test1/test4/test5/test6/ABCD_6',
    '/test1/test4/test5/test6/ABCD_7']

res = [Path(item).name for item in example_list]
print(res) # ['ABCD_1', 'ABCD_2', 'ABCD_3', 'ABCD_4', 'ABCD_5', 'ABCD_6', 'ABCD_7']

Comments

0

Just use reverse indexing:

new_list=[]
for i in example_list:
    j=i[-6:]
    new_list.append(j)
print(new_list)

Output will be

['ABCD_1', 'ABCD_2', 'ABCD_3', 'ABCD_4', 'ABCD_5', 'ABCD_6', 'ABCD_7']

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.