Python 编辑列表以删除已定义的变量以及字符后面的所有内容(包括字符)

Python 编辑列表以删除已定义的变量以及字符后面的所有内容(包括字符),python,list,edit,Python,List,Edit,我有以下设置: variable = /XXX/XXX/XXX/ list = [/XXX/XXX/XXX/INFO_RANDOM_STRING_HERE.file, etc...] 我想复制列表,但要修剪起始变量,以及除“INFO”段以外的所有内容(即,在随机之前和之后的所有内容)。信息每次都不同,这里的随机字符串也不同,但变量是常量 我怎样才能做到这一点 为了澄清,我有: variable = /users/me/folder/ list = [/users/me/folder/file1

我有以下设置:

variable = /XXX/XXX/XXX/
list = [/XXX/XXX/XXX/INFO_RANDOM_STRING_HERE.file, etc...]
我想复制列表,但要修剪起始变量,以及除“INFO”段以外的所有内容(即,在随机之前和之后的所有内容)。信息每次都不同,这里的随机字符串也不同,但变量是常量

我怎样才能做到这一点

为了澄清,我有:

variable = /users/me/folder/
list = [/users/me/folder/file1_001_134543_X5_6MGFS.txt, /users/me/folder/file2_231_234233_Y5_6MGFFAS.txt, etc...]
我想要 完整列表和新列表:

newlist = [file1, file2, etc...]

您可以在列表理解中使用
split()

[x.split(variable)[1].split('_')[0] for x in the_list]
请参阅完整代码:

variable = "/users/me/folder/"
the_list = ["/users/me/folder/file1_001_134543_X5_6MGFS.txt", "/users/me/folder/file2_231_234233_Y5_6MGFFAS.txt"]

print [x.split(variable)[1].split('_')[0] for x in the_list]
产出:

['file1', 'file2']
['file1', 'file2']

我已经准备了另一个示例(带注释),以防您不想使用
列表理解
,而是使用一个简单的
循环:

variable = "/users/me/folder/"
the_list = ["/users/me/folder/file1_001_134543_X5_6MGFS.txt", "/users/me/folder/file2_231_234233_Y5_6MGFFAS.txt"]

results_list = list()

for full_path in the_list:
    _, file_name = full_path.split(variable) # This splits "/users/me/folder/file1_001_134543_X5_6MGFS.txt" into "/users/me/folder/" and "file1_001_134543_X5_6MGFS.txt" so we take the last one as 'file_name'
    file_name = file_name.split('_')[0]      # This splits e.g. "file1_001_134543_X5_6MGFS.txt" in ["file1", "001", "134543", "X5", "6MGFS.txt"] so we take only the first one, which is in index 0
    results_list.append(file_name)           # Adding e.g. "file1" to our 'results_list'

print results_list
输出:

['file1', 'file2']
如果您实际上只是尝试获取basename,则可以使用
os.path.basename

lst = ["/users/me/folder/file1_001_134543_X5_6MGFS.txt", "/users/me/folder/file2_231_234233_Y5_6MGFFAS.txt"]
from os import path
lst[:] = [path.basename(s).split("_",1)[0] for s in lst]


print(lst)
输出:

['file1', 'file2']

请提供真实数据和所需输出。
variable = "/users/me/folder/"
list = ["/users/me/folder/file1_001_134543_X5_6MGFS.txt", "/users/me/folder/file2_231_234233_Y5_6MGFFAS.txt"]

length = len(variable)
list = [x[length:] for x in list]