简体   繁体   English

从字符串列表中删除不同的子字符串

[英]Remove different substrings from list of strings

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:]
example_list = [path.split('/')[-1] for path in example_list]

Output: Output:

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

given that these are all filesystem paths i suggest you use pathlib :鉴于这些都是文件系统路径,我建议您使用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']

Just use reverse indexing:只需使用反向索引:

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

Output will be Output 将

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM