如何在python django中使用*替换电子邮件地址的某些字符

时间:2019-06-06 07:35:39

标签: python django replace

我是django的新朋友。我在替换字符串的某些字符时遇到问题。我想在电子邮件地址中隐藏一些字符。所以我想用*替换电子邮件的某些字符。

电子邮件地址: demo.cipher@gmail.com

我想要类似 demo ******* @ gmail.com

的电子邮件地址

我使用replace函数来替换电子邮件地址字符,但是不起作用。

x = demo.cipher@gmail.com
e = x.replace(x[5], '*')

3 个答案:

答案 0 :(得分:0)

使用正则表达式。

        },
        DzSpanclick(){
            $("#filedrag").click();
        },
        DZint() {
            let dz = document.querySelector("#filedrag");
            var previewNode = document.querySelector("#dz-template");
            previewNode.id = "";
            var previewTemplate = previewNode.parentNode.innerHTML;previewNode.parentNode.removeChild(previewNode);
            Dropzone.autoDiscover = false;
            this.uploadImageGalleryVar = new Dropzone(dz, {
                url:"{$base_dir}post",
                parallelUploads: 100,
                paramName: "file",
                params: { do: "imageupload" },
                thumbnailWidth: 600,
                thumbnailHeight: 600,
                autoProcessQueue: false,
                acceptedFiles:"image/*",
                previewTemplate: previewTemplate,
                uploadMultiple: false,
                maxFiles: 8,
                maxFilesize: 5,
                autoDiscover : false,
                previewsContainer: "#previews",
                headers: { "Accept": "application/javascript" }
            });
        },

    },
    mounted: function() {
        this.DZint();
    }

});

输出:

注意:在上面的示例中,如果使用正则表达式Lookbehind和Lookahead替换了import re x = "demo.cipher@gmail.com" print(re.sub(r"(?<=\.)(.*?)(?=@)", lambda x: "*"*len(x.group()), x)) demo.******@gmail.com 符号之间的字符

答案 1 :(得分:0)

我认为最容易理解的方式就是遵循这些原则。

x = demo.cipher@gmail.com
e = x[:4] + "***@" + x.split("@")[-1]

当然,此解决方案使用了一些假设,这些假设在问题中尚不清楚。

  • @之前的电子邮件地址始终超过4个字符
  • 您想保持前四个字符可见
  • 显示要替换的字母数已经是您要提供给读者的一些信息,这不是必需的。因此,我将其固定为三个星号,以使其更加安全

如果您的操作对时间很紧迫,那么一定要对这些不同的方式进行计时。

答案 2 :(得分:0)

灵活的解决方案

import math

user_email = 'demo.cipher@gmail.com'

email_split = user_email.split("@")

email_title = email_split[0]
email_domain = email_split[1]

line_count = max(math.ceil(len(email_title)/2), 1)
replaced_title = email_title.replace(email_title[line_count * -1:],'*' * line_count)
hidden_email = f'{replaced_title}@{email_domain}'

输出:

demo.cipher@gmail.com -> demo.******@gmail.com
demo@gmail.com -> de**@gmail.com
dr@gmail.com -> d*@gmail.com

一个简单的解决方案

user_email = 'demo.cipher@gmail.com'
hidden_email  = ''.join([i if user_email.index(i)%3!=1 or i == '@' else '*' for i in user_email ])

输出:

demo.cipher@gmail.com -> d*mo*ci*h**@gmai**com