从python中的.txt文件中提取电子邮件地址

2024-04-26 06:45:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python从几个文本文件中解析出电子邮件地址。在第一次尝试中,我试图从字符串列表('2To whom correspondence should be addressed. E-mail: joachim+pnas@uci.edu.\n')中获取包含电子邮件地址的以下元素。在

当我试图通过i.find("@") == 0查找包含电子邮件地址的列表元素时,它没有给我content[i]。我是否误解了.find()函数?有更好的方法吗?在

from os import listdir

TextFileList = []
PathInput = "C:/Users/p282705/Desktop/PythonProjects/ExtractingEmailList/text/"

# Count the number of different files you have!
for filename in listdir(PathInput):
    if filename.endswith(".txt"):  # In case you accidentally put other files in directory
        TextFileList.append(filename)

for i in TextFileList:
    file = open(PathInput + i, 'r')
    content = file.readlines()
    file.close()

for i in content:
    if i.find("@") == 0:
        print(i)

Tags: inyou元素列表for电子邮件地址files
3条回答

python中的“Find”函数返回字符串中该字符的索引号。也许你可以试试这个?在

list = i.split(' ') # To split the string in words
for x in list:    # search each word in list for @ character
    if x.find("@") != -1:
        print(x)

如果找到要搜索的子字符串,则Find返回索引。这对你所要做的是不正确的。在

最好使用正则表达式或RE来搜索@的出现。在您的情况下,您可能会遇到每行有多个电子邮件地址的情况(同样,我不知道您的输入数据,所以我无法猜测)

以下几点对你有好处:

import re
for i in content:
    findEmail = re.search(r'[\w\.-]+@[\w\.-]+', i)
    if findEmail:
     print(findEmail.group(0))

你需要调整这个有效的电子邮件地址。。。我不太确定你是否可以有像+。。。在

在Python中,检查字符串是否包含字符的标准方法是使用^{} operator。在您的情况下,这将是:

for i in content:
    if "@" in i:
        print(i)

使用时,find方法返回@字符所在的位置,从0开始,如Python official documentation所述。在

例如,在字符串abc@google.com中,它将返回3。如果没有找到字符,它将返回-1。等效代码为:

^{pr2}$

但是,这被认为是unpythonic,并且in运算符的用法是首选的。在

相关问题 更多 >