Как я могу выделить часть пути - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу извлечь путь, содержащий слово "tk-nuke-writenode" в приведенном ниже примере.

Мне нужно выделить этот конкретный путь и только этот путь. Приведенные ниже пути не являются фиксированными, поэтому я не могу использовать функцию разделения и выбрать путь "tk-nuke-writenode", используя поле (например, [2]). Смотрите пример ниже:

NUKE_PATH = os.environ['NUKE_PATH']

Результат:

X: \ трубопровод \ app_config \ релиз \ расширения \ Global \ нюк; X: \ трубопровод \ app_config \ выпуск \ расширений \ проекты \ sgtk \ Powerplant \ установка \ APP_STORE \ ки-Nuke \ v0.11.4 \ classic_startup \ перезапускать; X: /pipeline/app_config/release/extensions/projects/sgtk/powerPlant/install/app_store/tk-nuke-writenode/v1.4.1/gizmos'

NUKE_PATH.split(os.pathsep)[2]

Результат:

X: /pipeline/app_config/release/extensions/projects/sgtk/powerPlant/install/app_store/tk-nuke-writenode/v1.4.1/gizmos'

Требуемый вывод:

X: /pipeline/app_config/release/extensions/projects/sgtk/powerPlant/install/app_store/tk-nuke-writenode/v1.4.1/gizmos'

Заранее благодарим за любую помощь, которую вы можете предложить!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Если ваши пути не содержат точек с запятой, вы можете сделать

path = 'X:\pipeline\app_config\release\extensions\global\nuke;X:\pipeline\app_config\release\extensions\projects\sgtk\powerPlant\install\app_store\tk-nuke\v0.11.4\classic_startup\restart;X:/pipeline/app_config/release/extensions/projects/sgtk/powerPlant/install/app_store/tk-nuke-writenode/v1.4.1/gizmos'
matches = [p for p in path.split(';') if 'tk-nuke-writenode' in p]
matches[0]
'X:/pipeline/app_config/release/extensions/projects/sgtk/powerPlant/install/app_store/tk-nuke-writenode/v1.4.1/gizmos'

Это вызовет исключение, если совпадений не найдено, и может быть хорошей идеей также обработать несколько совпадений.

0 голосов
/ 09 ноября 2018

Пути делятся на ';' так что вы можете использовать что-то вроде этого:

NUKE_PATH = os.environ['NUKE_PATH']
l = NUKE_PATH.split(';')
result = filter(lambda path: "tk-nuke-writenode" in path, l)
...