从python.csv文件中返回某个类型的所有电子邮件地址

时间:2018-08-18 17:41:16

标签: python regex

整个上午,我一直在用python编写这段代码,但我无法获得它返回想要的结果。我有一个.csv文件,其中包含一些模拟客户信息,其中包括电子邮件地址。我想返回.edu

的电子邮件地址列表

这里有我所拥有的(我是Python新手,实际上是在尝试学习Kotlin,而不是python)另外,可能有比使用regex更好的方法,但是Im试图通过这种方式来实现。如果有更好的方法,我愿意就什么以及为什么提出建议。

import csv
import re

data = []

with open('customerdata.csv') as f:
  reader = csv.reader(f, delimiter=',')
  for row in reader:
    data.append(row[7])
str1 = ' '.join(data)

edupattern = r'\b(.edu)'

regex = re.compile(edupattern, re.IGNORECASE)
for match in regex.findall(str1):
    print(match)

问题在于,无论它出现在.csv文件中多少次,它只会打印.edu。为什么我无法打印出整个电子邮件地址?

2 个答案:

答案 0 :(得分:0)

尝试一下:

    String st;
    BufferedReader Br = null;
    File objFile = new File("C:\\data\\file.txt");
    Br = new BufferedReader(new FileReader(objFile));
    while ((st = Br.readLine()) != null) {
        String value = st.replace("\"", "");
        String[] arraylist = value.split(",");                     
        for (String row : arraylist) {
            System.out.println(row);
        }
    }                   
    Br.close();

答案 1 :(得分:0)

我认为您的正则表达式应为:

= r"\b(\S+\.edu)"

使用捕获组时,只能获取捕获(即.edu部分)。您还应该在捕获中包括所有非S节奏字符。