@jintaxi
Чуть-чуть програю для себя.

Как заменить несколько элементов в одной строке на Python?

Есть некий массив, в котором хранятся некие данные.
array = ["1-ая пара, предмет, аудитория", "2-ая пара, предмет, аудитория", 
         "2-ая пара, предмет, аудитория", "4-ая пара, предмет, аудитория"]

Мне надо заменить некоторые элементы строки на некоторые другие элементы. Что б это выглядело примерно вот так:
array = ["9:40 - 10:30, предмет, аудитория", "10:40 - 12:10, предмет, аудитория",
         "12:50 - 14:20, предмет, аудитория", "14:30 - 16:00, предмет, аудитория"]

Как мне это сделать более корректно, не прибегая к конструкции:
for i in range(len(array):
    array[i] = array[i].replace("", "").replace("", "").replace("", ""). replace("", "")
  • Вопрос задан
  • 3858 просмотров
Решения вопроса 1
schedule = {
    '1': '9:40 - 10:30',
    '2': '10:40 - 12:10',
    '3': '12:50 - 14:20',
    '4': '14:30 - 16:00'
}
array = [i.replace(f'{i[0]}-ая пара', schedule[i[0]]) for i in array]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Задание не полное, непонятно что когда и как вы планируете обновлять.
самое простое использовать регулярку,
чуть более сложное но более наглядное преобразовать строку в класс, и заменять в нем значения тип так
from dataclasses import dataclass


@dataclass
class Record:
    times: str = None
    name: str = None
    room: str = None


array = ["1-ая пара, предмет, аудитория", "2-ая пара, предмет, аудитория",
         "2-ая пара, предмет, аудитория", "4-ая пара, предмет, аудитория"]

schedule = [Record(*v.split(',')) for v in array]
new_parsing_times = ["9:40 - 10:30", "10:40 - 12:10", "12:50 - 14:20", "14:30 - 16:00"]
for record, new_times in zip(schedule, new_parsing_times):
    record.times = new_times

print(schedule)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
05 нояб. 2024, в 11:03
15000 руб./за проект
05 нояб. 2024, в 11:00
15000 руб./за проект
05 нояб. 2024, в 10:55
1500 руб./за проект