【问题标题】:Please explain return with "+1:" in it [duplicate]请用“+1:”解释返回[重复]
【发布时间】:2021-09-23 18:45:51
【问题描述】:

这里是代码。 2个功能。

def get_domains(self): #returns test@test.com, test2@test.com etc in json. 
    if self.domain_names == None:
        r = requests.get(GET_DOMAINS_URL)
        if r.status_code != 200:
            raise ValueError("Can't get domains")
        self.domain_names = [item["name"] for item in r.json()]
    return self.domain_names

def is_valid_email(self, email):
    return email[email.find("@")+1:] in self.get_domains()

那么函数 is_valid_email 中的“+1:”部分是什么?它是如何工作的?

【问题讨论】:

  • 是邮件中@之后字符的索引。所以它是域名的开头。
  • 所以如果emailfoo@gmail.com,切片提取gmail.com
  • find 返回@ 的索引。如果您刚刚执行email[email.find("@"):],则切片将包含“@”。所以,“@example.com”。加1,得到@后面的域名,“example.com”。
  • 这段代码也有问题,因为 str.find 如果未找到子字符串则返回 -1,然后从字符串开头的切片添加 1。

标签: python string return slice one-liner


【解决方案1】:

这是一个字符串切片:

email[email.find("@")+1:]

这意味着 - 从 email 字符串中的所有字符从 @ 字符之后的第一个索引直到字符串的末尾。

或者简单地说 - 从电子邮件地址中提取域:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 2021-01-02
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多