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

Seemingly simple text replacement script question

我有一个小“问题”,我想通过编写一个简单的脚本来解决。我没有太多的编程经验,我想我会在这里寻求帮助,了解我应该寻找什么或知道如何做这件事。

基本上我想把一个电子邮件地址如placeholder.1234@fakemail.com替换成pl*************4@fakemail.com.

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

澄清一下,我并不是要别人为我写这篇文章,我只是需要一些关于如何去做的指导。我也想在 Python 中执行此操作,因为我已经在我的 PC 上设置了 Python。

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

尝试使用 String indexing and (string replacement or string concatenation) 的组合。

您可以使用 Python string slicing:

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:])

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

我们知道我们想要替换字符串中从第三个字符到“@”之前的字符 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 处理子字符串的。这是因为我们要包含该结束索引,而子字符串函数本身不会包含结束索引。

我希望这有助于回答您的问题!如果您需要任何进一步的说明或详细信息,请告诉我:)