【发布时间】:2017-03-22 10:29:32
【问题描述】:
我有以下字符串:
BUCKET1:/dir1/dir2/BUCKET1:/dir3/dir4/BUCKET2:/dir5/dir6
我正在尝试以一种可以取回以下 dict / 其他数据结构的方式对其进行拆分:
BUCKET1 -> /dir1/dir2/, BUCKET1 -> /dir3/dir4/, BUCKET2 -> /dir5/dir6/
如果我只有一个桶,而不是多个桶,我可以以某种方式拆分它,如下所示:
res.split(res.split(':', 1)[0].replace('.', '').upper()) -> it's not perfect
输入:ADRIAN:/dir1/dir11/DANIEL:/dir2/ADI_BUCKET:/dir3/CULEA:/dir4/ADRIAN:/dir5/ADRIAN:/dir6/
输出:[(ADRIAN, /dir1/dir11), (DANIEL, /dir2/), (CULEA, /dir3/), (ADRIAN, /dir5/), (ADRIAN, /dir6/)
根据 Wiktor Stribiżew cmets,以下正则表达式可以完成这项工作:
r"(BUCKET1|BUCKET2):(.*?)(?=(?:BUCKET1|BUCKET2)|$)"
【问题讨论】:
-
你不能有一个带有 2 个相同键的字典(BUCKET1)
-
您应该发布实际需求,在问题中添加有关存储桶名称的详细信息。如果您将它们作为列表,请在问题中提供列表。