代码如下:
#encoding=utf-8
print '中国'
#让某些字符串大小写不敏感 如比较和查询不敏感 其他敏感
#方案 封装为类
class iStr(str):
'''大小写不敏感的字符串类
类似str 比较和查询大小写不敏感
'''
def __init__(self,*args):
self.lowered = str.lower(self)
def __repr__(self):
return '%s(%s)' % (type(self).__name__,str.__repr__(self))
def __hash__(self):
return hash(self.lowered)
def _make_case_insensitive(name):
str_meth = getattr(str,name)
def x(self,other,*args):
try: other = other.lower()
except(TypeError, AttributeError, ValueError) :pass
return str_meth(self.lowered,other,*args)
setattr(iStr,name,x)
for name in 'eq lt le ge gt ne contains'.split():
_make_case_insensitive('__%s__' % name)
for name in 'count endswith find index rfind rindex startswith'.split():
_make_case_insensitive(name)
del _make_case_insensitive
a = iStr('abcA')
b = iStr('aBca')
print a == b
a = str('abcA')
b = str('aBca')
print a == b
打印结果如下:
中国
True
False