Как напечатать строки, разделенные символом новой строки (\n), в Python?

У меня есть код, который формирует текст, состоящий из нескольких строк, разделённых переносами строки (\n), и сохраняет его в одну переменную. Как мне реализовать выбор отдельных строк из этой переменной для вывода? <br/> <br/> Вот мой код: <pre><code class="python">x += (f"Предмет: {subject}")
                    x += '\n'
                    x += (f"Сроки проведения: {dates}")
                    x += '\n'
                    x += (f"Время начала: {times}")
                    x += '\n'
                    x += (f"Классы участия: {grades}")
                    x += '\n'
                    x += (f"Итоги проверки: {itog}")
                    x += '\n'
                    x += (f"Задания и решения: {results_publication}")
                    x += '\n'
                    x += ("-" * 20)
                    x += '\n'</code></pre> <br/> <br/> В данный момент в переменной содержится следующая информация: <br/> Предмет: Право <br/> Сроки проведения: 3 декабря 2024 года <br/> Время начала: 16:00 <br/> Классы участия: 9–11 <br/> Итоги проверки: официальная публикация ожидается 9.12 <br/> Задания и решения: задания и решения <br/> -------------------- <br/> Предмет: Математика <br/> Сроки проведения: 4 декабря 2024 года <br/> Время начала: 16:00 <br/> Классы участия: 7–8 <br/> Итоги проверки: официальная публикация ожидается 12.12 <br/> Задания и решения: задания <br/> <br/> Я хочу вывести только следующую информацию: <br/> Предмет: Математика <br/> Сроки проведения: 4 декабря 2024 года <br/> Время начала: 16:00 <br/> Классы участия: 7–8 <br/> Итоги проверки: официальная публикация ожидается 12.12 <br/> Задания и решения: задания <br/> <br/> Надеюсь, что вопрос понятен.
  • 9 декабря 2024 г. 15:13
Ответы на вопрос 2
Да, ваш вопрос понятен. Чтобы вывести только нужные строки из вашей переменной, вы можете использовать метод `split()` для разделения текста на строки, а затем выбрать нужные строки по индексу или выполнить фильтрацию.

Если ваш текст хранится в переменной `x`, вы можете сделать так:

```python
# Допустим, что у вас уже есть строка x с текстом
x = (
    "Предмет: Право\n"
    "Сроки проведения: 3 декабря 2024 года\n"
    "Время начала: 16:00\n"
    "Классы участия: 9–11\n"
    "Итоги проверки: официальная публикация ожидается 9.12\n"
    "Задания и решения: задания и решения\n"
    "--------------------\n"
    "Предмет: Математика\n"
    "Сроки проведения: 4 декабря 2024 года\n"
    "Время начала: 16:00\n"
    "Классы участия: 7–8\n"
    "Итоги проверки: официальная публикация ожидается 12.12\n"
    "Задания и решения: задания\n"
)

# Разделим текст на строки
lines = x.split('\n')

# Теперь выберем только нужные строки для предмета "Математика"
begin_index = lines.index("Предмет: Математика")
end_index = lines.index("--------------------", begin_index)  # Следующая разделительная строка

# Извлечем нужные строки
math_lines = lines[begin_index:end_index]

# Выводим результат
for line in math_lines:
    if line:  # Проверяем, что строка не пустая
        print(line)
```

В этом коде:

1. Мы сначала разбиваем строку `x` на отдельные строки с помощью `split('\n')`.
2. Находим индекс строки, где начинается информация о "Математика" с помощью `index()`.
3. Находим индекс следующей разделительной строки, чтобы понять, где заканчивается информация о "Математика".
4. Затем извлекаем нужные строки и выводим их с помощью цикла.

Этот метод позволяет вам динамически извлекать конкретные блоки информации на основе содержимого и структуры вашего текста.
Ну если через это г..., то <br/> <pre><code class="python">x_split = x.split('\n')
print(x_split[0]) # где 0 - номер нужной вам строки (считая  с 0)</code></pre> Если вы ищете по предмету, то можно и такое сварганить <br/> <pre><code class="python">def extract_specific_lines(text, subject_keyword):
    # Разбиваем строку на отдельные строки
    lines = text.split('\n')

    # Начинаем с пустого списка для хранения нужных строк
    selected_lines = []

    # Флаг для отслеживания, когда начинается нужный блок строк
    start_collecting = False

    # Перебираем все строки
    for line in lines:
        if line.startswith(f"Предмет: {subject_keyword}"):
            start_collecting = True
        if start_collecting:
            selected_lines.append(line)
            # Останавливаем сбор после последней нужной строки
            if line.startswith("Задания и решения:"):
                break

    # Объединяем выбранные строки в одну строку
    result = '\n'.join(selected_lines)

    return result

# Ваша исходная строка
x = """Предмет: Право
Сроки проведения: 3 декабря 2024 года
Время начала: 16:00
Классы участия: 9–11
Итоги проверки: официальная публикация ожидается 9.12
Задания и решения: задания и решения
--------------------
Предмет: Математика
Сроки проведения: 4 декабря 2024 года
Время начала: 16:00
Классы участия: 7–8
Итоги проверки: официальная публикация ожидается 12.12
Задания и решения: задания и решения"""

# Используем функцию для извлечения нужных строк
subject_keyword = "Математика"
result = extract_specific_lines(x, subject_keyword)

# Выводим результат
print(result)</code></pre> <br/> <br/> Но вообще все это бред. По-хорошему надо так: <br/> <pre><code class="python">blocks = []
block = {
        "Предмет": subject,
        "Сроки проведения": dates,
        "Время начала": times,
        "Классы участия": grades,
        "Итоги проверки": itog,
        "Задания и решения": results_publication
}
blocks.append(block)</code></pre> <br/> А потом делайте, что хотите. Например вывести всё на экран можно так <pre><code class="python">for block in blocks:
    for key, value in block.items():
        print(f"{key}: {value}")
    print("-" * 20)</code></pre>
Похожие вопросы