1. 什么是card id
card是卡片的意思,ID是身份的缩写,好像只有ID card,是身份证的意思
#!/usr/bin/envpython
#coding=utf-8
importre
,timedelta
importplatform
ifplatform.python_version()[:1]=='2':#判断python版本是2还是3
importsys
reload(sys)
sys.setdefaultencoding('utf8')
classIdcard(object):
'''
>>>m=Idcard('225122198611134730')
>>>print(m.sex)
男
>>>m.birth
'1986-11-13'
>>>m.age
30
'''
def__init__(self,idcard):
self.idcard=idcard
iflen(idcard)==15:
sex,birth=idcard[-1:],'19'+idcard[6:12]
eliflen(idcard)==18:
sex,birth=idcard[-2:-1],idcard[6:14]
else:
raiseException('len(idcard)is{}(15/18)'.format(len(idcard)))
self._sex=int(sex)%2
self._birth=birth
@property
defsex(self):
returnu'男'ifself._sex%2elseu'女'
@property
defage(self):
now,bir=dt.now(),dt.strptime(self._birth,'%Y%m%d')
beforebirth=(now-dt(now.year,bir.month,bir.day)).days<0
returndt.now().year-int(self._birth[:4])-beforebirth
@property
defbirth(self):
returndt.strptime(self._birth,'%Y%m%d').strftime('%Y-%m-%d')
defalignment(str1,space,align='left'):
length=len(str1.encode('gb2312'))
space=space-lengthifspace>=lengthelse0
ifalign=='left':
str1=str1+''*space
elifalign=='right':
str1=''*space+str1
elifalign=='center':
str1=''*(space//2)+str1+''*(space-space//2)
returnstr1
defmain():
fname='customer.txt'
'''
withopen(fname,'w')asf:
f.write("""
郑文杰225122198611134730
文萍225122198912094740
郑妈妈225122590303476
郑爸爸225122560506471
""")
'''
newf='ourcustomers.txt'
withopen(fname)asf:
s=f.readlines()
L,newL=[re.split(r's+',i.strip())foriins],[]
foriinL:
iflen(i)==2:
g=Idcard(i[1])
newL.append('{}{}{}'.format(
alignment(i[0],10),alignment(g.sex,8),g.age))
withopen(newf,'w')asf:
f.write(' '.join(newL))
print(' '.join(newL[:100]))
print('Customerdatahasbeenwriteinto{}'.format(newf))
if__name__=='__main__':
importdoctest
doctest.testmod()
main()
3. Python编写一个程序 可以读取邮件日志(mbox.txt),统计每个邮件发出的邮件数量,并输出结果。
由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配,但不是不可以实现,这个以后优化时再说。
需求描述:
一个父目录中存在多个子文件夹,子文件夹下有多个txt形式化的Log日志,要求从所有地方Log日志中找出CardType=9, CardNo=0时的CardID的值,并将其统计存储到一个文本文件中,要求CardID不能够重复。
需求解析:
首先获取所有的Log日志的全路径,根据路径分别加载到将各个Log日志加载到内存中进行提取分析,并将结果存储到给定的文本文件中。
解决方案:
为了尽可能的简洁通用,这里使用配置文件作为输入变量的依据。不多说,上代码:
配置文件如下:
心得体会:
1、利用Python去处理一些日常的小任务,可以很方便的完成,相比较C/C++来说,这方面生产力高了不少。
2、本文设计对中文字符的处理,所以使用正则表达式不太怎么方便,但不少不可以,后续版本中会添加对正则的支持!
3、由于初学中,所以代码写的不够精炼简洁,后续进行再优化!
4. 用Python校验身份证号码真伪
#这个算法都给了,应该比较简单吧。我也很菜,随意写了一个。异常没做,你可以自##己加一下。做一些验证过滤。不知道随机是不是真是随意随机,我没有按照身份证规##则做随机。是真的随机了18位。。。如果你有规则,也可以自己写一个。
importrandom
yushu=[xforxinrange(0,11)]
ma=['1','0','X','9','8','7','6','5','4','3','2','1']
defyanzheng(nid):
dicma=dict(zip(yushu,ma))
sum=0
forx,yinenumerate(nid[:-1]):
sum+=((2**(18-x-1))%11)*int(y)#17位对应系数相乘的和
ifnid[-1]==dicma[sum%11]:#校验码对照
return'%sTrue'%nid
else:
return'%sFalse'%nid
defreadfile(fname):
f=open(fname,'rb')
forlineinf.readlines():
printyanzheng(line.strip())
f.close()
defrandnum():
idstr=''
foriinrange(17):#前17位随机
idstr+=str(random.randint(0,9))
idstr+=random.choice(ma)#最后一位从列表种随意一个,因为有X
returnidstr
if__name__=="__main__":
nid=raw_input('PleaseenteryourID:')#用户输入ID,没做任何验证
printyanzheng(nid)#验证身份证
readfile('id.txt')#从文件读出来再验证
printyanzheng(randnum())#随机一个在验证
5. paython中id命令的用途
用于获取对象的内存地址。
我们每一个人都有身份证来证明自己的身份。网络地址也有,那就是id。
网络id可以用来表示计算机属于哪个网络。Python中也有id函数,而Python中每个对象拥有唯一的内存id,所以id函数它主要用于获取指定对象的内存id值,是Python中必不可少的内置函数。Python中id()函数用于获取对象的内存地址。
id(object)返回的是对象的“身份证号”,唯一且不变,但在不重合的生命周期里,可能会出现相同的id值。此处所说的对象应该特指复合类型的对象(如类、list等),对于字符串、整数等类型,变量的id是随值的改变而改变的。
6. python里怎么知道a的id
用id()函数当a,b为2的时候id相同,而为2.5的时候不同,这种情况在string字符串的时候也会出现,即当很短的a,b赋值很短的字符串的时候,它们的id值相同,而很长的则不会。
id()函数用于获取对象的内存地址。语法id([object]),返回对象的内存地址。对于字符串、整数等类型,变量的id是随值的改变而改变的。
id(object)返回的是对象的“身份证号”,唯一且不变,但在不重合的生命周期里,可能会出现相同的id值。
7. python中的id怎么用
python自带一款ide,在电脑上安装好python开发环境后,安装好python开发环境,打开搜索框,输入IDLE,回车,打开此应用,就可以写python代码了。