看似简单的文字替换脚本问题



我有一点"问题";我想通过编写一个简单的脚本来解决这个问题。我没有太多的编程经验,我想我应该在这里寻求帮助,或者知道如何做到这一点。

基本上,我想取一个像placeholder.1234@fakemail.com这样的电子邮件地址,并将其替换为pl*************4@fakemail.com

我需要脚本将前两个字母之后和最后一个字母之前的字母转换为星号,它们必须与字符数量相匹配。

只是为了澄清,我并不是要求有人帮我写这篇文章,我只是需要一些关于如何做到这一点的指导。我也想用Python来做这件事,因为我的电脑上已经有了Python设置。

您可以使用Python字符串切片:

email = "placeholder.1234@fakemail.com"
idx1 = 2
idx2 = email.index("@") - 1
print(email[:idx1] + "*" * (idx2 - idx1) + email[idx2:])

输出:

pl*************4@fakemail.com

说明:

  1. 定义将包含电子邮件地址的字符串:
email = "placeholder.1234@fakemail.com"
  1. 定义星号开始位置的索引,即2
idx = 2
  1. 定义星号应结束的索引,即@符号减去1的索引:
idx2 = email.index("@") - 1
  1. 最后,使用定义的索引,可以对相应定义的字符串进行切片和连接:
print(email[:idx1] + "*" * (idx2 - idx1) + email[idx2:])

所以这封电子邮件将是一个字符串。

请尝试使用字符串索引和(字符串替换或字符串串联(的组合。

首先,让我们考虑一下我们将把它存储在什么数据类型中。它应该是一个字符串,因为它包含字母和字符。

我们知道我们想要将字符串的一部分从第三个字符替换为"0"之前的字符2@&";。

现在让我们从索引的角度来考虑这个问题。第三个字符,或我们用于替换的start索引位于索引2。为了找到字符"的索引@&";,我们可以这样使用:index()函数:

end = email.index('@')

然而,我们想从索引之前的2开始替换,所以我们可以从中减去2

现在我们有了要替换的索引(起点和终点(。现在,我们可以使用从开始索引到结束索引的子字符串,并使用.replace()函数将email中的子字符串替换为一堆*的。

为了确定我们需要多少*,我们可以找到索引的差异,然后加1得到总数。所以我们可以做一些类似的事情:

stars = "*" * (end - start + 1)

email = email.replace(email[start:end + 1], stars)

请注意我是如何对子字符串执行start:end + 1的。这是因为我们希望包含结束索引,而子字符串函数本身不会包含结束索引。

我希望这有助于回答你的问题!如果您需要任何进一步的澄清或细节,请告诉我:(

最新更新