В этом случае было бы больно выписывать все лямбда-выражения как отдельную функцию.
Что этот код делает вкратце? Преобразует пользовательскую таблицу Excel в операторы вставки для пользовательской таблицы базы данных. Существует сопоставление между полями таблицы Excel и полями базы данных, а также сопоставление между полями таблицы Excel и функциями, которые должны применяться к значению таблицы Excel, прежде чем оно будет вставлено в БД. Вы не хотите определять отдельную функцию для каждого поля.
map_func = { 'ID' : lambda x : 'mig_farm_seq.nextval',
'ENTERPRISE_NAME' : wrap_str,
'TAX_NUMBER' : wrap_str,
'FAMILY_NAME' : lambda x : wrap_str(x.split()[0]),
'GIVEN_NAME' : lambda x : wrap_str(x.split()[1]),
'ENTERPRISE_REGISTRATION_NUMBER' : wrap_str,
'PREMISE_NAME' : wrap_str,
'HOUSE_ID' : wrap_str,
'POSTAL_CODE' : wrap_str,
'PHONE_NUMBER_1' : lambda x : wrap_str(get_phone_number(x, True)),
'PHONE_NUMBER_2' : lambda x : wrap_str(get_phone_number(x, False)),
'FAX_NUMBER' : lambda x : wrap_str(x.replace(' ', '')),
'BANK_IDENTIFIER' : lambda x : wrap_str(x.replace(' ', '').replace('-', '')[:3]),
'BANK_ACCOUNT_NUMBER' : lambda x : wrap_str(x.replace(' ', '').replace('-', '')),
'NUMBER_OF_EMPLOYEES' : wrap_null,
'SETTLEMENT_NUMBER' : wrap_null,
'REGISTRATION_NUMBER' : lambda x : insert_reg_number % x,
'GENDER' : wrap_str,
'ACTIVITY' : lambda x : '0',
'REG_HOLDER_ACTIVITY' : lambda x : '0',
'PROCESSED_BY_JOB' : lambda x : '0'
}
источник: http://pastebin.com/MxEPBMaZ