首页 > 解决方案 > 使用列表推导从列表中创建字符串

问题描述

我正在尝试从以下给定列表中创建一个用逗号分隔的字符串

 ['D:\\abc\\pqr\\123\\aaa.xlsx', 'D:\\abc\\pqr\\123\\bbb.xlsx', 'D:\\abc\\pqr\\123\\ccc.xlsx']

新字符串应仅包含如下文件名,以逗号分隔

'aaa.xlsx,bbb.xlsx,ccc.xlsx'

我已经使用下面的代码实现了这一点

n = []        
for p in input_list:
    l = p.split('\\')
    l = l[len(l)-1]
    n.append(l)
a = ','.join(n)
print(a)

但是,我不想使用多行代码,而是想使用列表理解或正则表达式在单行中实现这一点。

提前致谢...

标签: python-3.xlist

解决方案


简单地做一个

main_list = ['D:\\abc\\pqr\\123\\aaa.xlsx', 'D:\\abc\\pqr\\123\\bbb.xlsx', 'D:\\abc\\pqr\\123\\ccc.xlsx']

print([x.split("\\")[-1] for x in main_list])

输出:

['aaa.xlsx', 'bbb.xlsx', 'ccc.xlsx']

如果你想得到这个字符串,只需做一个

print(",".join([x.split("\\")[-1] for x in main_list]))

输出:

aaa.xlsx,bbb.xlsx,ccc.xlsx

另一种方法是:

print(",".join(map(lambda x : x.split("\\")[-1],main_list)))

输出:

aaa.xlsx,bbb.xlsx,ccc.xlsx

确实看到os.path.basename是依赖于操作系统的,并且可能会在跨平台脚本上产生问题。


推荐阅读