#!/usr/bin/env python # Это не программа! Это просто набор функций. # Запуск этого файла ничего не даст. # fmtstr.py # Набор функций для работы с телефонными номерами, # почтовыми индексами и т.п. # Copyright Paul Evans 2002, Распространяется на условиях GPL # # Tue Sep 17 16:36:05 PDT 2002 Paul Evans # Это программное обеспечение может свободно распространяться и/или изменяться # в соответствии с условиями GNU General Public License версии 2 или более поздней, # опубликованной Free Software Foundation. # Это программное обеспечение распространяется в надежде, # что оно будет вам полезно, но БЕЗ КАКИХ ЛИБО ГАРАНТИЙ. # За пояснениями обращайтесь к тексту # GNU General Public License. # Вместе с данным программным обеспечением должен распространяться # текст GNU General Public License, # если это не так -- сообщите в Free Software Foundation, Inc., # по адресу 675 Mass Ave, Cambridge, MA 02139, USA. # или посетите http://www.gnu.org/philosophy/free-sw.html ###################################################################### # Unique a python list object # # Ref: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560 # # Автор: Raymond Hettinger, 2002/03/17 # ###################################################################### def uniqOrdered(alist) # Fastest order preserving set = {} return [set.setdefault(e,e) for e in alist if e not in set] def uniqFast(alist) # Fastest without order preserving set = {} map(set.__setitem__, alist, []) return set.keys() ###################################################################### # Добавляет символ 's', для обозначения множественного числа # # Ref: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81058 # # Автор: Robin Parmar, 2001/10/16 # ###################################################################### def plural(num=0, text=''): return "%d %s%s" % (num, text, "s"[num==1:]) ################################################# # Оставляет в строке только допустимые символы # ################################################# def filter(inStr, allowed): outStr = '' for c in inStr: if c in allowed: outStr += c return outStr ############################ # Возвращает текущую дату # ############################ import time def ds(): # вернуть строку, содержащую тек. дату в формате ISO stamp = time.strftime('%Y-%m-%d', time.localtime(time.time() ) ) return(stamp) ############################################################ # Форматирует строку в соответствии с заданным шаблоном # # Ref: comp.lang.python # # Автор: Guido van Rossum (yes, *that* one..) 1998/10/13 # ############################################################ import string def fmtstr(fmt, str): res = [] i = 0 for c in fmt: if c == '#': res.append(str[i:i+1]) i = i+1 else: res.append(c) res.append(str[i:]) return string.join(res) ############################################################################## # Форматирует строку в соответствии с заданным шаблоном # # Для обработки форматов переменной длины - переворачивает входные аргументы # ############################################################################## import re def formatStr(inStr, fmtStr, p = '^'): inList = [x for x in inStr] #список строк.. fmtList = [x for x in fmtStr] inList.reverse(); fmtList.reverse() outList = [] i = 0 for c in fmtList: if c == p: try: outList.append(inList[i]) i += 1 # прервать цикл, если fmtStr длиннее, чем inStr except IndexError: break else: outList.append(c) # обработать остаток inStr, если она длиннее, чем fmtStr while i < len(inList): outList.append(inList[i]) i += 1 outList.reverse() outStr = ''.join(outList) # выкинуть лишние скобки и дефисы, стоящие в начале строки while re.match('[)|-| ]', outStr[0]): outStr = outStr[1:] # добавить парные скобки while outStr.count(')') > outStr.count('('): outStr = '(' + outStr return outStr ##################################### # форматирование денежных величин # ##################################### def moneyfmt(self, instr): return '%5.2f' % float(instr) ######################################################### # Пример безопасного преобразования строк в целые числа # # Ref: email # # Автор: Mike Orr, 2002/09/17 # ######################################################### def safeInt(s): try: return int(s) except (TypeError, ValueError): return 0 # Если 0 - допустимое значение по-умолчанию.