从字符串列表中删除其他子字符串

时间:2020-07-17 11:22:35

标签: python list for-loop if-statement

我有一个要删除的带有两个不同前缀的字符串列表。

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

我希望新列表看起来像这样:

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

我正在尝试类似的方法,但是一直遇到错误。

for i in example_list:
    if i.startswith('/test1/test2/test3/'):
        i=i[19:]
    else:
        i=i[25:]

3 个答案:

答案 0 :(得分:3)

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

输出:

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

答案 1 :(得分:2)

鉴于这些都是文件系统路径,我建议您使用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']

答案 2 :(得分:0)

只需使用反向索引:

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

输出将为

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