如何将单元格中的文本与正则表达式匹配并仅保留与正则表达式匹配
我想做的是:有一个很大的excel表,有很多随意的客户信息.我想在新的Excel文件中以设置格式对电子邮件地址和其他数据进行排序.
我无法弄清楚如何匹配单元格文本(它将具有像地址电子邮件那样格式化和类似的格式)与正则表达式匹配,并且只保留列表中的正则表达式数据. 真的很感激一些帮助.谢谢 import sys,os,openpyxl def sort_email_from_xl(): sheet = sheet_select() #Opens the worksheet emailRegex = re.compile(r'''([a-zA-Z0-9._%+-]+@+[a-zA-Z0-9.-]+(.[a-zA-Z]{2,4}))''',re.VERBOSE) customeremails = [] for row in range(0,max_row): if cell.text == emailRegex: mail = cell.text customeremails.append(mail) return customeremails print(customeremails)
这段代码应该可行(我只能测试正则表达式部分):
import sys,openpyxl def sort_email_from_xl(): sheet = sheet_select() #Opens the worksheet emailRegex = re.compile(".*?([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}).*?") customeremails = [] for row in range(0,max_row): if emailRegex.match(cell.text): mail = emailRegex.match(cell.text).groups()[0] cell.text = mail customeremails.append(mail) print(customeremails) 您的代码存在许多问题.首先关于正则表达式: >正则表达式不允许在您的电子邮件地址周围添加文字,并添加.*?在开始和结束 现在,电子邮件正则表达式适用于基本用法,但我明确建议从Stackoverflow上的其他答案中获取经过验证的电子邮件正则表达式. 然后:使用emailRegex.match(cell.text),您可以检查cell.text是否与您的正则表达式匹配,以及与emailRegex.match(cell.text).groups()[0]匹配,您只提取匹配的部分.你也有一个回复声明.
您需要纠正行中的循环,例如像documented here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |