【问题标题】:How to extract company name from emails using find() method in python?如何在 python 中使用 find() 方法从电子邮件中提取公司名称?
【发布时间】:2019-05-06 05:05:10
【问题描述】:

我对 Python 还是很陌生。我正在处理我的任务,但我仍然不明白在提取电子邮件时 find() 方法是如何工作的。该函数的目的是使用 find() 方法提取电子邮件的公司(即,@ 符号之后但 . 之前的所有内容)。

示例用法:

extract_company("larhe@uber.com") 应该返回 "uber"

所以我理解 find(subtr, start, end)。我知道它应该如何工作,但只有一种情况。但是,这要求在 @ 和 .

这是迄今为止我一直在工作的代码,但它仍然给我一个断言错误

def extract_company(email):
    return email.find('@' and '.') 

【问题讨论】:

    标签: python


    【解决方案1】:

    find() 方法查找特定字符串等。您要查找的是 @ 之后和 .com 之前的单词,因此您可以使用正则表达式。然而,还有另一种令人讨厌的方法使用 split 来做到这一点

    def extract_company(email):
        return email.split('@')[-1].split('.')[0]
    

    此代码将执行的操作是将电子邮件地址拆分为“@”,然后取出最后一项并将其拆分为“。”然后获取第一个列表项,这将是您的公司名称。

    如果您打算使用正则表达式。然后代码将是:-

    import re
    def extract_company(email):
        x= re.findall(r"\@(.*?)\.", "uditvashisht@gmail.com")
        return x[0]
    

    它的作用是查找 '@' 和 '.' 之间的所有字符。然后返回该字符的列表。该列表中的元素是公司名称。

    【讨论】:

    • 您好!感谢您向我展示 split()。此作业中的一件事是我们无法导入正则表达式。另外,我认为她希望我们使用 find() 方法。我想知道在这种情况下我们是否可以使用 find().find() ?
    • 我认为@zero 的另一个答案将解决您的目的。
    【解决方案2】:
    def extract_company(email):
        index_of_at = email.find('@')
    
        return email[index_of_at+1:email.rfind('.')]
    

    假设您需要使用基础 Python,这是一种方法。

    1. 存储找到第一个“@”的索引。
    2. 对字符串进行切片,从字母之后“@”(即index_of_at + 1)和最后一个“.”(即email.rfind('.'))开始。

    【讨论】:

    • 好的!我想我终于得到了正确的答案。太感谢了。我真的没想过将索引存储到电子邮件[email.find()] 中。我只是在使用 email.find() 很难理解如何从 @ 到 .
    【解决方案3】:

    您可以使用内置的re 库从电子邮件中提取公司名称。

    例子:

    import re
    email = "lahre@uber.com"
    print(re.findall(r'\w+[.]', email)[0][:-1])
    

    输出:

    uber
    

    【讨论】:

    • 你好,你能解释一下范围 [0] [:-1] 吗?
    • re.findall 方法返回一个值列表。 [0] 表示list 的第一个值。列表中的公司名称包含 . 作为最后一个字符。 [:-1]是提取公司名称不带.
    【解决方案4】:

    与第一个答案类似的方法,但通过使用 split() 函数迭代字符串并分配 2 个单独的变量来使用 index() 函数。切片操作指向“@”和“.”之间的字符串值

    def find_companyname():
        name = input("Enter in an email address: ")
        for i in name.split():
            n = i.index("@")   ## Slice begins +1 avoiding the @
            d = i.index(".")   ## Slice end and by default not accounting it
        print(name[n+1:d])
    

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多