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时间的双精度浮点数型的.
中文处理
- 截取中文字符串
1 def clipChinese(s, length):
2 s = ''.join(re.split(r'<[^>]*>', s))
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
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()