Разбить массив на несколько массивов по условию
Помогите, пожалуйста разбить массив на несколько по условию. Имеется примерно такой массив (из внешнего файла):
TIMESTEP: 1
ITEM: ATOMS x y z
1 2 3
1 2 3
2 2 3
TIMESTEP: 2
ITEM: ATOMS x y z
2 3 4
4 4 4
5 5 5
7 7 7
TIMESTEP: 3
ITEM: ATOMS x y z
2 3 4
4 4 4
5 5 5
3 2 1
1 1 1
1 1 1
6 6 6
Пользователь вводит значение TIMESTEP в консоли, и выводится массив значений, соответствующий данному шагу. Количество элементов в пределах одного такого подмассива - разное. Я думала, что нужно как-то работать с повторяющимися строками ITEM: ATOMS x y z, но не могу сообразить как.
Ответы (1 шт):
Автор решения: Leksor
→ Ссылка
Как то так:
def split_array(file_content, step):
step_data = []
lines = file_content.split("\n")
reading_data = False
for line in lines:
if "TIMESTEP: " + str(step) in line:
reading_data = True
elif "TIMESTEP: " in line:
reading_data = False
elif reading_data:
step_data.append(line)
return step_data
file_content = "TIMESTEP: 1\nITEM: ATOMS x y z\n1 2 3\n1 2 3\n2 2 3\nTIMESTEP: 2\nITEM: ATOMS x y z\n2 3 4\n4 4 4 \n5 5 5\n7 7 7\nTIMESTEP: 3\nITEM: ATOMS x y z\n2 3 4\n4 4 4 \n5 5 5\n3 2 1 \n1 1 1\n1 1 1 \n6 6 6"
step = int(input("Введите номер: "))
step_data = split_array(file_content, step)
print("Данные для шага", step, ":")
print("\n".join(step_data))