timur_gis, в python 2.7 maketrans и translate - это функции модуля string. Прежде, чем использовать, их придётся импортировать. Кроме того, они не очень хорошо работают с юникодом, мягко говоря. Можно попробовать так накостылить:
timur_gis, потому, что логические операции не предназначены для управления потоком выполнения. На самом деле выполняются обе, обе возвращают строку, над которыми выполняется логическая операция AND, в результате которой у вас остаётся одна из строк, и именно она трактуется Arcgis'ом, как возвращаемое значение.
Есть подозрение, что ArcGIS делает из python-кода лямбду. А лямбда не может иметь состояний и побочных эффектов. Она может только вернуть какое-то значение.
Если моё предположение верно, то может помочь богомерзкий однострочник:
u''.join((u''.join(t) for t in zip(u'{0}{2} {1}'.format(*(!direction!.replace(u'N', u'С').replace(u'W', u'З').replace(u'S', u'Ю').replace(u'E', u'В').split(u' '))).split(u'-'), u'º\'"')))