Я не думаю, что эта информация (код BIC / SWIFT) всегда присутствует в номере IBAN. Глядя на вики-статью IBAN , каждая страна имеет свой собственный стандарт, поэтому стандартизируются только префикс страны и контрольная сумма. Трейлинг и самая длинная часть всегда являются своего рода банковским маршрутизацией / кодом, соединенным с номером счета. Но проблема в том, что банковский маршрут / код предназначен для большинства стран, а не SWIFT-кода, т.е. не того, что вы ищете. Например, в Германии они используют BLZ, который всегда является цифрой (я думаю, 8 цифр) и 640 901 00 отображается в код BIC VBRTDE6RXXX, который не будет присутствовать в IBAN.
Что вы можете сделать:
Я нашел следующую функцию по http://mail.python.org/pipermail/python-list/2007-May/441896.html. Это, кажется, работает вполне хорошо, и я вполне уверен способ, которым его импорт не будет топать ни на каком существующем импорте, который Вы могли бы уже иметь.
def module_exists(module_name):
try:
mod = __import__(module_name)
except ImportError:
return False
else:
return True
if module_exists('simplejson'):
import simplejson as json
elif module_exists('json'):
import json
elif module_exists('django.utils'):
from django.utils import simplejson as json
else:
raise ImportError('Requires either simplejson, Python 2.6 or django.utils')
Я знаю, что это походит на большее количество кода, но функция является допускающей повторное использование в другом месте при выполнении большого количества этого.
def import_any(*mod_list):
res = None
for mod in mod_list:
try:
res = __import__(mod)
return res
except ImportError:
pass
raise ImportError("Requires one of " + ', '.join(mod_list))
json = import_any('simplejson', 'json', 'django.utils.simplejson')
Я ценю симпатичные функции для того, чтобы сделать это, но шаблон, который Вы иллюстрируете в исходном вопросе, является обычно используемым шаблоном для этого требования. Вы видите, что это использовало во многих проектах с открытым исходным кодом.
Я предлагаю, чтобы Вы придерживались его. Помните "ужасный", не всегда "плохо".