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代碼了。