Разбить массив на несколько массивов по условию

Рейтинг: 1Ответов: 1Опубликовано: 01.02.2023

Помогите, пожалуйста разбить массив на несколько по условию. Имеется примерно такой массив (из внешнего файла):

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Принят

Как то так:

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))