Моя задача — создать комбинации, больше похожие на декартово произведение, для некоторых строк атрибутов файла библиотеки. В настоящее время я столкнулся с проблемой группировки одних и тех же атрибутов (конечно, соседние параметры разные) в виде подсписков списка. Помните, что мои входные данные могут содержать тысячу строк атрибутов , которые мне нужно извлечь из файла библиотеки.
################# ####
Пример ввода:
Код: Выделить всё
attr1 apple 1
attr1 banana 2
attr2 grapes 1
attr2 oranges 2
attr3 watermelon 0
Example output:
Код: Выделить всё
[['attr1 apple 1','attr1 banana 2'], ['attr2 grapes 1','attr2 oranges 2'], ['attr3 watermelon 0']]
Код: Выделить всё
['attr1 apple 1','attr1 banana 2', 'attr2 grapes 1','attr2 oranges 2', 'attr3 watermelon 0']
Код: Выделить всё
import re
# regex pattern definition
pattern = re.compile(r'attr\d+')
# Open the file for reading
with open(r"file path") as file:
# Initialize an empty list to store matching lines
matching_lines = []
# reading each line
for line in file:
# regex pattern match
if pattern.search(line):
# matching line append to the list
matching_lines.append(line.strip())
# Grouping the elements based on the regex pattern
#The required list
grouped_elements = []
#Temporary list for sublist grouping
current_group = []
for sentence in matching_lines:
if pattern.search(sentence):
current_group.append(sentence)
else:
if current_group:
grouped_elements.append(current_group)
current_group = [sentence]
if current_group:
grouped_elements.append(current_group)
# Print the grouped elements
for group in grouped_elements:
print(group)
Источник: https://stackoverflow.com/questions/781 ... -of-a-list