Programación en Python, ¡responda! Preguntas 2 y 3
#!/usr/bin/env?python
#coding=utf-8
importar?re
desde?datetime ?import?datetime?as?dt,?timedelta
import?platform
if?platform.python_version()[:1]?==?'2':?#Judgement ¿La versión 2 o 3 de Python
import?sys
reload(sys)
sys.setdefaultencoding('utf8')
clase ?Idcard(objeto):
'''?
gt;gt;gt;?m?=?Idcard('225122198611134730')
gt ; gt; gt;?print(m.sex)
Hombre
gt; gt;?m.nacimiento
'1986-11-13 '
gt;gt;gt;?m.age
30
'''
def?__init__(self, idcard ) :
self.idcard?=?idcard
if?len(idcard)?==?15:
sexo,?nacimiento?=?idcard [ -1:],?'19'??idcard[6:12]
elif?len(idcard)?==?18:
sexo,?nacimiento?= ? tarjeta de identificación[-2:-1],?tarjeta de identificación[6:14]
else:
raise?Exception('len(tarjeta de identificación)?is?{}?(15 / 18)'.format(len(idcard)))
self._sex?=?int(sex)??2
self._birth?=?birth
@property
def?sex(self):
return?u'male'?if?self._sex??2?else?u'female'< / p>
@property
def?age(self):?
ahora,?bir?=?dt.now(),?dt.strptime(self. _nacimiento ,?'Ymd')
antes del nacimiento?=?(ahora?-?dt(ahora.año,?bir.mes,?bir.día)).días?lt;?0
return?dt.now().año?-?int(self._birth[:4])?-?beforebirth
@property
def?birth( self ):
return?dt.strptime(self._birth,?'Ymd').strftime('Y-m-d')
def?alignment(str1,?space, ? align?=?'left'):
longitud?=?len(str1.encode('gb2312'))
espacio?=?espacio?-?longitud
?if?space?gt;=length?else?0
if?align?==?'left':
str1?=?str1?'?'?* ?espacio
elif?align?==?'right':
str1?=?'?'*?espacio? str1
elif?align? ==?'center':
str1?=?'?'?*?(espacio?//2)? str1?'?'*?(espacio?-?espacio?//? 2)
return?str1
def?main():
fname?=?'cliente.txt'
'' '
con?open(fname,?'w')?as?f:
f.write("""
Zheng Wenjie?225122198611134730
p>¿Wen Ping?225122198912094740
¿Mamá Zheng?225122590303476
¿Papá Zheng?225122560506471
""")
' ''
newf?=?'nuestrosclientes.txt'
con?open(fname)?as?f:
s?=? f.readlines ()
L,?newL?=?[re.split(r'\s ',?i.strip())?for?i?in?s],?[]
for?i?in?L:
if?len(i)?==?2:
g?=?Idcard(i[1 ])
newL.append('{}{}{}'.format(
alineación(i[0],?10),?alineación(g.sex,? 8), ?g.age))
con?open(newf,?'w')?as?f:
f.write('\n'.join( newL))
print('\n'.join(newL[:100]))
print('¿Cliente?datos?¿has?estado?escribir?en?{} '.format (newf))
if?__name__?==?'__main__':
importar?doctest
doctest.testmod()
principal()