使用列表推导从列表创建字符串

时间:2020-08-10 10:39:03

标签: python-3.x list

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

 ['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)

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

预先感谢...

2 个答案:

答案 0 :(得分:4)

只需做一个

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 与操作系统有关,并且可能在跨平台脚本上产生问题。

答案 1 :(得分:2)

os.path.basenamestr.join一起使用

例如:

import os
data = ['D:\\abc\\pqr\\123\\aaa.xlsx', 'D:\\abc\\pqr\\123\\bbb.xlsx', 'D:\\abc\\pqr\\123\\ccc.xlsx']
print(",".join(os.path.basename(i) for i in data))

输出:

aaa.xlsx,bbb.xlsx,ccc.xlsx