Вы можете использовать re.sub
с lambda
:
import re
l = "test %1, %13, %14, %15"
_dict = {"%1": "%33", "%13": "%14", "%14":"%15", "%15": "%17"}
new_l = re.sub('%\d+', lambda x:_dict[x.group()], l)
Выход:
'test %33, %14, %15, %17'
Вы можете использовать dict.get
, чтобы предотвратить KeyError
, предостав значение по умолчанию, если ключ отсутствует в _dict
:
new_l = re.sub('%\d+', lambda x:_dict.get(x.group(), x.group()), l)
Необходимо было бы использовать платформу Набора ввода-вывода для разработки собственного драйвера устройства, который будет эмулировать виртуальный CD-привод. Вот некоторые ссылки на соответствующие API для запущения Вас.
Основные принципы Набора ввода-вывода
Существует несколько различных людей ответов, сделали предложение здесь. Текущий вопрос - то, что является Вами пытающийся выполнить. Если Вы действительно захотите эмулировать CD-ROM (вниз к commandset), то необходимо будет записать драйвер устройства. Если Ваша цель состоит в том, чтобы просто эмулировать блочное устройство с содержанием, подобным CD, можно создать образ диска с помощью дисковой утилиты и позволить встроенному драйверу образа диска обработать ее для Вас.
MacFUSE полезен, если Вы хотите представить своего рода пользовательскую функциональность файловой системы, но если то, что Вы ищете, является чем-то, что имеет ту же семантику как оптический диск (является ли это и блок или уровень набора команд), это - неправильный инструмент.
Если Вы просто надеетесь монтировать ISO или что-то затем, что он сделан через Дисковую утилиту, просто перетащите его в боковую панель и затем выберите его и выберите, монтируются.
Если Вы хотите сделать это из кода, можно дать hdiutil команду, как показано здесь. Я не уверен, существует ли вызов API, чтобы сделать это, но то, чтобы заставлять ту команду сделать, работа является довольно безболезненной.
Самым простым способом смонтировать пользовательский объем является MacFUSE. Это обрабатывает детали IOKit для Вас и позволяет Вам записать реализацию в пространстве пользователя. Однако я не думаю, что можно заставить MacFUSE быть похожим” на CD; необходимо было бы изменить FUSE для достижения этого.