У меня есть код, который формирует текст, состоящий из нескольких строк, разделённых переносами строки (\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/> Надеюсь, что вопрос понятен.
Да, ваш вопрос понятен. Чтобы вывести только нужные строки из вашей переменной, вы можете использовать метод `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>