= Python = == 时间对象 == * 格式化时间 {{{ 第一个问题,'06SEP21'转换为时间的,按照如下: import time t=time.strptime('06SEP21','%y%b%d') 然后得到的t就是一个时间元组,具有9个字段那种.可以按照如下转换为UNIX时间: dt=time.mktime(t) 我不知你说的time对象是什么,我只知道Python里面有时间元组和UNIX时间(双精度浮点 数)两种格式.使用UNIX时间输出你要的格式如下: time.strftime('%Y-%m-%d',time.localtime(dt)) 使用时间元组的方式输出更加方便一些如下: time.strftime('%Y-%m-%d',t) 注意这里的变量t是时间元组型的,而dt是UNIX时间的双精度浮点数型的. }}} == 中文处理 == * 截取中文字符串 {{{#!python def clipChinese(s, length): s = ''.join(re.split(r'<[^>]*>', s)) #替换掉HTML标签 print s length = 3*length t = s[:length] try: unicode(t,'gbk') except: t = s[:length-1] try: unicode(t,'gbk') except: t = s[:length-2] if len(s) > length: return t + '...' return t }}} 参考了limodou老大的做法,我这个在django中使用。不知道为什么,在django中len('中文')=6 == Python AOP == * 用原类实现AOP {{{#!python class MetaAll(type): def __new__(mcl, name, bases, dict): def log(func): def f(*args, **kwds): print 'pre %s' % func.__name__ value = func(*args, **kwds) print 'post %s' % func.__name__ return value return f for attr, value in dict.iteritems(): if attr.startswith('set'): dict[attr] = log(value) return super(MetaAll, mcl).__new__(mcl, name, bases, dict) __metaclass__ = MetaAll class A: def __init__(self): self.__x = 1 def getx(self): return self.__x def setx(self, value): self.__x = value a = A() a.setx(2) print a.getx() }}}