#python #regex #string #3d #render
#python #регулярное выражение #строка #3D #визуализация
Вопрос:
ЗАГОЛОВОК = MANTRA (IFD amp; RENDER): mh 104_IJ_5070_Fireworks_residualSmoke_v3 (/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty) (Frames: 1001-1151)
Я хочу изолировать «mh 104_IJ_5070_FireWorks_residualSmoke_v3» часть этого заголовка, используя регулярное выражение, но я изо всех сил пытаюсь найти чистый способ сделать это.
Есть идеи?
Python 2.7 пожалуйста
Комментарии:
1. Итак, я бы посоветовал привести больше примеров заголовков. Всегда ли будут заголовки, за которыми следует
2 characters
отдельный идентификатор?_
2. РЕНДЕРИНГ KATANA: abr char_nasr_main_lookdev_v002 (Слои: turntable_head) (Кадры: 1001-1200) (Время: ~ 30 мин) (Tpl: v004)
3. РЕНДЕРИНГ SHOTBOT KATANA: abr MC0825_main_layout_v001 (Слои: bty_grey_qc) (Кадры: 1001-1185) (Время: ~ 15 мин) (Tpl: v005)
4. ОТРИСОВКА СООТВЕТСТВИЯ: abr MS0255_main_matchmation_v001 (Слои: выходные данные) (кадры: 1001-1052)
Ответ №1:
Все зависит от того, что вы можете изменить, то есть от того, к чему вам нужно привязать ваше регулярное выражение.
Лично я бы избегал регулярных выражений, если вы можете помочь этому — они просто создают много ошибок.
Попробуйте:
" ".join(str.split()[6:8])
Разделите строку на слова, а затем возьмите 6-е и 7-е слова и соедините их обратно.
Если вы действительно хотите использовать regexp
import re
r = "TITLE = (?P<title>.*): (?P<data>.*) ((?P<path>.*)) (Frames: (?P<frame>.*))"
m = re.match(r, str)
m.groupdict()
{'path': '/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty', 'frame': '1001-1151', 'data': 'mh 104_IJ_5070_Fireworks_residualSmoke_v3', 'title': 'MANTRA (IFD amp; RENDER)'}
Комментарии:
1. У меня не работает, потому что это инструмент, который будет анализировать тонны разных заголовков, он не всегда выглядит так. Но я всегда пытаюсь изолировать информацию, разделенную _, поэтому потребуется регулярное выражение.
2. Добавлено регулярное выражение — но все зависит от того, что меняется, а что остается неизменным, и какие биты вас интересуют.
Ответ №2:
Предполагая, что первая часть заголовка MANTRA (IFD amp; RENDER):
не изменяется и что две части, которые вы хотите извлечь, не содержат пробелов, должно сработать следующее:
import re
title = "MANTRA (IFD amp; RENDER): mh 104_IJ_5070_Fireworks_residualSmoke_v3 (/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty) (Frames: 1001-1151)"
substring = re.search(r": (S S )", v).group(1)
print(substring)
Выдает:
'mh 104_IJ_5070_Fireworks_residualSmoke_v3'
Это эффективно захватывает все после первого двоеточия пробела :
и захватывает первые две части символов, не содержащих пробелов.