Отказ от ответственности: используйте парсер, если у вас есть опция. Тем не менее ...
Это регулярное выражение, которое я использую (!) Для соответствия тэгам HTML:
<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>
Это может быть не идеально, но я запустил этот код через lot HTML. Обратите внимание, что он даже ловит странные вещи, такие как , которые появляются в Интернете.
Думаю, чтобы он не соответствовал самодостаточным тегам, вы либо захотите использовать Kobi :
<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+(?
или просто объединить, если и если нет.
To downvoters: Это рабочий код из реального продукта. Я сомневаюсь, что кто-либо читает эту страницу, создается впечатление, что социально приемлемо использовать регулярные выражения для HTML.
Предостережение. Я должен заметить, что это регулярное выражение все еще ломается при наличии блоков CD87, комментариев и элементов сценария и стиля. Хорошая новость заключается в том, что вы можете избавиться от тех, кто использует регулярное выражение ...
Если интерпретация, которую я дал в своем комментарии, верна, один из способов разрешить пользователю вызывать функции, которые вы определяете, - поместить эти функции в словарь с указанием их имени. Затем вы можете проверить этот дикт, чтобы увидеть, принадлежит ли ему i
, и вызвать функцию, если это необходимо.
def buclick():
i = ent.get()
if i in user_callable_functions:
user_callable_functions[i]()
else:
messagebox.showinfo("Error", "There is no product with this name")
#put this just above root.mainloop()
user_callable_functions = {
"ic5501": ic5501,
"ic5502": ic5502
}
Из информации, которую вы нам дали, кажется, что в строке 22, где вы пытаетесь if i == i()
, вы пытаетесь проверить, соответствует ли переменная i возвращаемому значению функции i (). Мне кажется, что у вас нигде нет функции i () (и в любом случае это будет плохое имя для функции). Может быть, вы пытаетесь проверить if i == result
, где result
- это переменная ic5501 или ic5502? Поправь меня, если я ошибаюсь.
РЕДАКТИРОВАТЬ
После проверки комментариев, если вы пытаетесь проверить, является ли я именем функции, я бы рекомендовал в качестве базового начала (в зависимости от того, является ли это большой проект) создание списка со всеми именами функций и связывание их с функцией.
my_functions = [["function_1", function_1], ["function_2", function_2]]
Я отсылаю вас к другому вопросу, ответ на который может помочь вам использовать вышеуказанное решение.