我有一个文件路径字符串列表.我想以拆分文件路径字符串的列表结束.

之前:

path_list = ['path/to/file.txt', 'path/to/another/file.txt', 'another/path/to/afile.txt', 'justafile.txt']

所需输出:

[['path/', 'to/', 'file.txt'], 
 ['path/', 'to/', 'another/', 'file.txt'], 
 ['another/', 'path/', 'to/', 'afile.txt'], 
 ['justafile.txt']]

到目前为止,我已经try 了以下几种方法:

path_list = ['path/to/file.txt', 'path/to/another/file.txt', 'another/path/to/afile.txt', 'justafile.txt']
new_list = []
for i in path_list:
    new_list.append(Path(i).parts)

它很接近,但丢失了斜杠(/).

推荐答案

我想你不需要在你的路径部分使用斜杠.如果你真的这样做了,那么你可以简单地在每个部分后面加上os.path.sep.

也就是说,您可以将re.split与保留分隔符的固定向后模式一起使用:

import re
import os
split_paths = [re.split(f'(?<={os.path.sep})', p) for p in path_list]
print (split_paths)
# [['path/', 'to/', 'file.txt'], ['path/', 'to/', 'another/', 'file.txt'], ['another/', 'path/', 'to/', 'afile.txt'], ['justafile.txt']]

More information on regex lookarounds

Python相关问答推荐

从webhook中的短代码(而不是电话号码)接收Twilio消息

如何删除索引过go 的lexsort深度可能会影响性能?' &>

不理解Value错误:在Python中使用迭代对象设置时必须具有相等的len键和值

删除字符串中第一次出现单词后的所有内容

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

在vscode上使用Python虚拟环境时((env))

python中字符串的条件替换

为一个组的每个子组绘制,

基于多个数组的多个条件将值添加到numpy数组

在用于Python的Bokeh包中设置按钮的样式

如何在Gekko中处理跨矢量优化

如何将泛型类类型与函数返回类型结合使用?

python的文件. truncate()意外地没有截断'

Polars表达式无法访问中间列创建表达式

操作布尔值的Series时出现索引问题

类型对象';敌人';没有属性';损害';

在聚合中使用python-polars时如何计算模式

某些值的数值幂和**之间的差异

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

Python:使用asyncio.StreamReader.readline()读取长行