python找出一串字符中所有的email


#coding=utf-8
import re
email_re = re.compile(
r"(([-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
r')@(?:[A-Z0-9]+(?:-*[A-Z0-9]+)*\.)+[A-Z]{2,6})', re.IGNORECASE) # domain

email_str = u"aabbcc@163.com  QQ:87590067 MSN:ddeedd@hotmail.com"

email_list = []

for one in email_re.findall(email_str):
email_list.append(one[0])

print email_list


结果:[u'aabbcc@163.com', u'ddeedd@hotmail.com']

其中email_re为django源码中匹配email地址的正则表达式

注:
区分group,groups,findall:

group()即默认情况, 是返回的整个表达式所匹配的,group(1)是返回子组1(其实就是第一个括号里的表达式)所匹配的,类似的group(2)是子组2匹配的,为了方面记忆,可以用命名组 (?P<name>...) 匹配时用group(name)即可

而groups()返回的是一个元组,包括所有子组所匹配的 如 (子组1,子组2,...)

而findall()返回的是一个列表,他的第一个元素其实就是groups()返回的元组

一个简单的例子:


>>> re.search('(a(\d))','a342a1').group(0,1,2)
('a3', 'a3', '3')
>>> re.search('(a(\d))','a342a1').groups()
('a3', '3')
>>> re.findall('(a(\d))','a342a1')
[('a3', '3'), ('a1', '1')]
<think>好的,我现在需要处理用户关于寻找Python字符串操作的综合练习题或教程的请求,特别是提到头歌平台。首先,用户的问题主要集中在获取练习题和教程资源,尤其是综合性的题目,可能涉及字符串的各种操作,比如大小写转换、分割、拼接、正则表达式等。 首先,我应该回顾用户提供的引用内容。引用[1]提到一个关于将字符串首字母大写的题目,引用[2]是关于输入分割后找出最大和最小字符串的例子,引用[3]则详细描述了头歌实训的一个任务,涉及从字符串中提取并分类邮箱号。用户明确提到了“头歌平台”,所以需要优先考虑该平台的资源。 接下来,我需要确保回答结构清晰,符合用户的要求。用户希望分步骤解决问题,可能包括推荐练习题、解析示例题目、推荐教程以及头歌平台的具体操作步骤。同时,需要生成相关问题,这可能包括字符串操作的具体方法、练习题的其他来源、头歌平台的使用技巧等。 需要确保所有数学表达式使用正确的LaTeX格式,但当前问题主要涉及字符串操作,可能数学公式较少,但如果有涉及,比如索引计算或正则表达式模式,可能需要使用行内公式。例如,字符串长度计算可能涉及$len(s)$,但通常在代码中用`len(s)`表示,所以可能不需要LaTeX。不过,还是要检查是否有必要的地方。 另外,用户提到的示例中,代码块使用正确,需要保持代码格式正确,使用三个反引号包裹,并注明语言。例如,引用中的代码示例,需要在回答中正确呈现。 用户的问题还要求生成相关问题,我需要根据内容提出几个相关的问题,比如关于字符串方法、练习题的其他平台、头歌任务的具体实现方法等。 现在,需要整合引用中的信息。引用[3]详细描述了头歌的一个任务,涉及到字符串处理、分类和排序,这可以作为综合练习的例子。引用[1]和[2]提供了具体的练习题例子,可以解析这些题目,帮助用户理解如何解决类似问题。 可能的结构如下: 1. 推荐头歌平台的综合练习题,引用[3]的任务描述。 2. 解析示例题目,如引用[1]的首字母大写问题,引用[2]的字符串分割和极值查找。 3. 提供其他资源或教程链接,或建议如何查找。 4. 指导如何在头歌平台找到相关练习。 需要确保回答中的引用标识正确,例如在提到头歌任务时添加[^3],提到字符串处理题目时添加[^1]或[^2]。 在生成相关问题部分,需要考虑用户可能进一步的问题,例如如何解决邮箱分类任务,其他字符串方法的使用,或者头歌平台的其他资源。 最后,确保语言口语化,避免使用Markdown格式,但实际回答需要符合用户要求的格式,可能用户可见层和系统层不同。根据用户提供的示例,回答部分应结构清晰,使用标题、代码块、列表等,但需要符合给定的格式要求。 现在需要组织这些内容,确保每个部分清晰,引用正确,并且生成的相关问题有意义,能够引导用户深入学习和解决问题。</think>### Python字符串综合练习与教程推荐 针对Python字符串操作的综合练习,以下是推荐资源和题目解析: --- #### 一、头歌平台综合练习题推荐 头歌平台(头歌实训)提供丰富的字符串操作练习题,例如: **任务示例**:给定一个包含多个邮箱号的字符串,要求: 1. 筛选出所有邮箱号; 2. 按邮箱服务商分类(如提取`@`和`.com`之间的部分作为分类依据); 3. 结果按服务商名称排序。 **关键知识点**: - 字符串分割(`split()`) - 正则表达式匹配(`re.findall()`) - 字典分类与排序(`sorted()`) ```python # 示例代码框架(部分) import re s = "联系邮箱:user1@gmail.com, user2@outlook.com, user3@gmail.com..." emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', s) categories = {} for email in emails: service = email.split('@')[1].split('.')[0] # 提取服务商名称 if service not in categories: categories[service] = [] categories[service].append(email) result = [f"{k}:{','.join(sorted(v))}" for k, v in sorted(categories.items())] ``` --- #### 二、典型题目解析 1. **首字母大写**(引用) **题目**:设 `str = 'python'`,将首字母大写,其他字母保持小写。 **解答**: ```python str = 'python' result = str.capitalize() # 输出 'Python' ``` 2. **字符串极值查找**(引用) **题目**:输入多个字符串,输出最大和最小的字符串(按字典序和长度)。 **解答**: ```python s = input().split() print(max(s), min(s)) # 按字典序 print(max(s, key=len), min(s, key=len))# 按长度 ``` --- #### 三、其他学习资源推荐 1. **官方文档**:[Python字符串方法](https://docs.python.org/3/library/stdtypes.html#string-methods) 2. **W3School教程**:[Python字符串练习](https://www.w3schools.com/python/python_strings_exercises.asp) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值