1. Python

1.1. 时间对象

  • 格式化时间

第一个问题,'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时间的双精度浮点数型的.

1.2. 中文处理

  • 截取中文字符串
       1 def clipChinese(s, length):
       2     s = ''.join(re.split(r'<[^>]*>', s)) #替换掉HTML标签
       3     print s
       4     length = 3*length
       5     t = s[:length]
       6     try:
       7         unicode(t,'gbk')
       8     except:
       9         t = s[:length-1]
      10         try:
      11             unicode(t,'gbk')
      12         except:
      13             t = s[:length-2]
      14     if len(s) > length:
      15         return t + '...'
      16     return t
    
    参考了limodou老大的做法,我这个在django中使用。不知道为什么,在django中len('中文')=6

1.3. Python AOP

  • 用原类实现AOP
    •    1 class MetaAll(type):
         2    def __new__(mcl, name, bases, dict):
         3       def log(func):
         4          def f(*args, **kwds):
         5             print 'pre %s' % func.__name__
         6             value = func(*args, **kwds)
         7             print 'post %s' % func.__name__
         8             return value
         9          return f
        10       for attr, value in dict.iteritems():
        11          if attr.startswith('set'):
        12             dict[attr] = log(value)
        13       return super(MetaAll, mcl).__new__(mcl, name, bases, dict)
        14 
        15 __metaclass__ = MetaAll
        16 
        17 class A:
        18    def __init__(self):
        19       self.__x = 1
        20 
        21    def getx(self):
        22       return self.__x
        23 
        24    def setx(self, value):
        25       self.__x = value
        26 
        27 a = A()
        28 a.setx(2)
        29 print a.getx()