我必须打印带空格的名字,你可以帮帮我吗? 我得到了这样的代码:
class Perfil:
def __init__(self,email,nome,cidade):
self.email=email
self.nome=nome
self.cidade=cidade
def __str__(self):
return "Perfil de "+self.nome+" ""("+self.email+")"" de "+self.cidade
def getCidade(self):
return self.cidade
def setCidade(self,novo):
self.cidade=novo
def getDominio(self):
t=self.email.rpartition("@")
return t[2]
def limpaNome(self):
new=""
if self.nome.isalpha()==True:
return self.nome
else:
for i in self.nome:
if i.isalpha()==True:
new +=i
return new
当我运行程序时:
>>> p=Perfil("lol@mail.pt","Ze Car231los", "Porto")
>>> p.limpaNome()
'ZeCarlos'
我需要一张像Ze Carlos' (带空格)
基本上我需要使用抽象数据类型(类Profile)编写程序来为每个用户保存信息。每个对象都具有以下属性:
email
name
city
该类应具有以下方法来操作上面的对象
Method
__init__(self, email, name, city) - constructor
__str__(self)
getCity(self) - return the value of atribute city
getCity(self.new) - return the atribute city with a new value
getDomain(self) - example: lol@mail.com sugestion: use the method partition (i have to return mail.com only)
cleanName(self) - change the atribute name, deleting characters WICH are not alphabetic or spaces sugestion: use method isalpha
答案 0 :(得分:1)
如果你要做的就是从字符串中删除所有出现的'0'
,'1'
,'2'
,...,'9'
,那么你可以使用{ {1}}像这样:
str.translate
请注意,Python中不需要像这样的getter / setter:
def limpaNome(self):
return self.nome.translate({ord(c):None for c in '0123456789'})
相反,只需让用户直接访问/设置属性:def getCidade(self):
return self.cidade
def setCidade(self,novo):
self.cidade=novo
。如果您在某个时候想要在访问或分配属性时运行某个功能,那么您可以self.cidade
property 而无需更改使用语法
您甚至可以制作cidade
和getDominio
属性:
limpaNome
请注意,在访问或设置酒店时,您不需要使用paretheses。语法看起来与@property
def dominio(self):
t=self.email.rpartition("@")
return t[2]
@property
def limpaNome(self):
return self.nome.translate({ord(c):None for c in '0123456789'})
是普通属性相同:
lipaNome
答案 1 :(得分:0)
import string
# ... the rest of your code
# ...
def limpaNome(self):
whitelist = set(string.ascii_uppercase+string.ascii_lowercase+" ")
if self.nome.isalpha():
return self.nome
else:
return ''.join(ch for ch in self.nome if ch in whitelist)
或者使用正则表达式:
import re
# ...
# ...
def limpaNome(self):
return re.sub(r"[^a-zA-Z ]",'',self.nome)
请注意,如果我是你,我会这样做:
class Perfil:
def __init__(self, email, nome, cidade):
self.email = email
self.cidade = cidade
self.nome = limpaNome(nome)