У меня есть вопрос из 2 частей. В конечном счете, я пытаюсь найти любую строку, содержащуюся в $""
, с regex
, а затем заменить ее на значение из словаря. Вот что у меня есть:Regex найти и заменить на словарь
import re
# Dictionary to use to replace with later
myDict = {'hand_R_item':'hand_R_node', 'hand_L_item':'hand_L_node', 'hips_item':'hips_node', 'body_item':'body_node'}
# String to process
command = '''objs = [$"hand_R_item", $"hand_L_item", $"hips_item"]
for obj in objs:
cmds.select(add = True)
cmds.parent(obj, $"body_item")
'''
# Find all instances of anything matching $""
regex = re.compile(r'\$\"[\w]*?\"')
allMatches = re.findall(regex, command)
# Replace matches with values from dict
newCommand = command
for match in allMatches:
newCommand = newCommand.replace(match, myDict.get(match[2:-1], ''))
print newCommand
Это выведет следующее, что и хотят:
'objs = [hand_R_node, hand_L_node, hips_node]
for obj in objs:
cmds.select(add = True)
cmds.parent(obj, body_node)'
Мои вопросы в основном, чтобы увидеть, если я подхожу это правильный путь:
r'\$\"[\w]*?\"'
лучший образец для использования? Мне не нравятся регулярные выражения, поэтому я не знаю, не хватает ли я каких-либо подводных камней!- Есть ли более эффективный способ заменить все вместо того, чтобы перебирать результаты регулярного выражения? Я чувствую, что может быть более элегантный подход.
Почему бы просто не использовать 're.sub()'? –
Это может быть именно то, что мне нужно, но я не самый знакомый с 're', вы можете показать мне быстрый пример? –
Хорошо, позвольте мне выслать ответ :) –