如何转换/隐藏电子邮件地址中的字符从
member@company.org
m****r@c*****y.org
我发现了一个名为"email_split"的包,我可以(可能)使用它…有没有更好的办法?
你可以定义一个函数来创建一定长度的星号,然后在适当的地方添加星号。
像这样:
def ast(length):
s=""
for i in range(length):
s= s + "*"
return s
s= "member@company.org"
a = s.split("@")
a2 = a[1].split(".")
obs_email= a[0][0] + ast(len(a[0][1:-1])) + a[0][-1] + "@" + a2[0][0] + ast(len(a2[0][1:-1])) + a2[0][-1] + "." + a2[1]
输出:
'm****r@c*****y.org'
编辑:更正@saromba评论的错误
这是我的解决方案。甚至"@"符号之前的点和更长的或更短的结尾(.uk,…)都是可能的
mail = "me.mber@company.org"
at = mail.find('@')
dot = mail[at:].find('.')
mail = mail[0] +'*'*(at-2)+ mail[at-1:at+2]+'*'*(dot-3)+mail[at+dot-1:]
可以用星号隐藏第一个和最后一个字符之间的部分。python中的STR索引和字符串连接非常有用。
user@user-Inspiron:~/code/advanced_python$ cat remthis.py
def mask_all_in_between_first_and_last(name):
name = name[0] + '*'*(len(name)-2) + name[-1]
return name
def mask_email(email):
username, domain_info = email.split('@')
domain_name, domain = domain_info.split('.')
username = mask_all_in_between_first_and_last(username)
domain_name = mask_all_in_between_first_and_last(domain_name)
return f'{username}@{domain_name}.{domain}'
if __name__ == '__main__':
to_be_masked = 'member@company.org'
masked = mask_email(to_be_masked)
print(masked)
user@user-Inspiron:~/code/advanced_python$ python remthis.py
m****r@c*****y.org
user@user-Inspiron:~/code/advanced_python$