Используйте re.sub
:
replacements = {'the':'a',
'this':'that'}
def replace(match):
return replacements[match.group(0)]
# notice that the 'this' in 'thistle' is not matched
print re.sub('|'.join(r'\b%s\b' % re.escape(s) for s in replacements),
replace, 'the cat has this thistle.')
Отпечатки
a cat has that thistle.
Примечания:
re.escape
, чтобы избежать интерпретации их как регулярных выражений. r'\b'
, чтобы убедиться, что совпадения предназначены только для целых слов. Вы получаете segfault в его деструкторе в первый или во второй раз? Помните, что деструктор главного окна должен выполняться только один раз. То есть, он должен выполняться либо из-за разворачивания стека, либо из-за WA_DeleteOnClose
, но не оба раза.
IIRC, Creator помещает главное окно на стек main()
. Поэтому, когда main()
возвращается, главное окно уничтожается.
эта ссылка дает хорошее предложение на решении.
Меня я думаю, что лучшее должно определить как QPointer, чтобы указать на obj и протестировать ПУСТОЙ УКАЗАТЕЛЬ каждый раз с помощью него, поэтому когда UI obj уничтожается, указатель, установленный в NULL непосредственно. "QPointer обеспечивает охраняемые указатели для QObjects. Можно использовать его для содержания ссылки на диалоговое окно и когда диалоговое окно будет удалено, указатель будет установлен в NULL автоматически".