如何 return 正则表达式匹配之前和包括列表的所有元素?
How to return all elements of a list before and including regex match?
我想将一个列表分成多个子列表。该列表包含两种类型的元素:"colors" 和 "color-IDs"。颜色 ID 之间的颜色元素数量各不相同:
colors = ['red', 'blue' ,'green', 'DocJ20031212doc1223', 'pink', 'yellow', 'DocNY20021212doc1212']
我希望每个子列表包含颜色 ID 和颜色 ID 之前的所有颜色。我试图将元素附加到基于正则表达式的新列表,尝试不同的索引和 if/if 而不是组合。经过广泛的研究,这是我想出的最好的:
colors_sorted = []
for i in colors:
if re.search("Doc[a-zA-Z 0-9]{16}",i) or len(colors_sorted) == 0:
colors_sorted.append([i])
else:
colors_sorted[-1].append(i)
print (colors_sorted)
但是,这会生成一个以颜色 ID 开头的新列表,而我希望颜色 ID 成为每个子列表的最后一个元素。
我的输出是:
[['red', 'blue', 'green'], ['DocJ20031212doc1223', 'pink', 'yellow'], ['DocNY20021212doc1212']]
我们可以使用辅助变量稍微重新安排您的方法来存储子列表:
colors_sorted = []
group = []
for i in colors:
group.append(i)
if i.startswith("Doc"):
colors_sorted.append(group)
group = []
我想将一个列表分成多个子列表。该列表包含两种类型的元素:"colors" 和 "color-IDs"。颜色 ID 之间的颜色元素数量各不相同:
colors = ['red', 'blue' ,'green', 'DocJ20031212doc1223', 'pink', 'yellow', 'DocNY20021212doc1212']
我希望每个子列表包含颜色 ID 和颜色 ID 之前的所有颜色。我试图将元素附加到基于正则表达式的新列表,尝试不同的索引和 if/if 而不是组合。经过广泛的研究,这是我想出的最好的:
colors_sorted = []
for i in colors:
if re.search("Doc[a-zA-Z 0-9]{16}",i) or len(colors_sorted) == 0:
colors_sorted.append([i])
else:
colors_sorted[-1].append(i)
print (colors_sorted)
但是,这会生成一个以颜色 ID 开头的新列表,而我希望颜色 ID 成为每个子列表的最后一个元素。
我的输出是:
[['red', 'blue', 'green'], ['DocJ20031212doc1223', 'pink', 'yellow'], ['DocNY20021212doc1212']]
我们可以使用辅助变量稍微重新安排您的方法来存储子列表:
colors_sorted = []
group = []
for i in colors:
group.append(i)
if i.startswith("Doc"):
colors_sorted.append(group)
group = []