def Max(l):
m = None
for e in l:
if m is None or e > m:
m = e
return m
def LJust(s, n):
return s if len(s) >= n else s + ' ' * (n - len(s))
l = [
'/dbfs/mnt/abc/date=20210225/fsp_store_abcxyz_lmn_',
'/dbfs/mnt/abc/date=20210225/fsp_store_schu_lev_bsd_s_',
]
res = [e.rpartition('/')[-1] for e in l]
res2 = [[e0, e1] for e0, e1 in zip(l, res)]
maxl = Max([len(e) for e in l])
print('Source'.ljust(maxl) + ' Extracted')
print('\n'.join([LJust(s, maxl) + ' ' + d for s, d in res2]))
res3 = [e1 for e0, e1 in res2]
import os
paths = [
'/dbfs/mnt/abc/date=20210225/fsp_store_abcxyz_lmn_',
'/dbfs/mnt/abc/date=20210225/fsp_store_schu_lev_bsd_s_'
]
for path in paths:
print(os.path.basename(path))
使用str.rpartition()解决任务的示例。我必须重新实现Max()和LJust()函数,因为您有
pyspark
,并且它对内置max()
和str.ljust()
有不同的实现运行我的代码后,您可以在代码中进一步使用
res2
或res3
res2
包含格式为[source, extracted]
的所有行,res3
只包含提取的值Try it online!
输出:
假设列表项是路径:
出去
os.path.basename
:https://docs.python.org/3/library/os.path.html#os.path.basename这个函数非常好,因为您不必指定路径分隔符。[
\\
或/
]相关问题 更多 >
编程相关推荐