python - 为什么下面的代码只打印出 python 2.7 中的内存位置?
问题描述
编写以下代码以查找给定字符串的电子邮件地址。但是当我打印出来时,它只给出了内存位置。那么如何获取以下代码中的值呢?我正在使用 Python 2.7。我认为以下代码是用 Python3 编写的。
import re
emails = '''
CoreyMSchafer@gmail.com
corey.schafer@university.edu
corey-321-schafer@my-work.net
'''
pattern = re.compile(r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+')
matches = pattern.finditer(emails)
for match in matches:
print match
来源:https ://github.com/CoreyMSchafer/code_snippets/blob/master/Python-Regular-Expressions/simple.py
解决方案
您正在打印匹配对象本身的表示,这对调试更有用。在 python 2 中,没有在该表示上做出很大努力,它只是打印对象类型和地址:
<_sre.SRE_Match object at 0x0000000003425E68>
<_sre.SRE_Match object at 0x0000000003425ED0>
<_sre.SRE_Match object at 0x0000000003425E68>
在我的 python 3 版本上,我得到了更好的打印输出,可能是时候迁移到 python 3 了……:
<_sre.SRE_Match object; span=(1, 24), match='CoreyMSchafer@gmail.com'>
<_sre.SRE_Match object; span=(25, 53), match='corey.schafer@university.edu'>
<_sre.SRE_Match object; span=(54, 83), match='corey-321-schafer@my-work.net'>
无论如何,您要打印主要捕获的组:
for match in matches:
print(match.group(0))
结果:
CoreyMSchafer@gmail.com
corey.schafer@university.edu
corey-321-schafer@my-work.net
请注意,您通常应该if match is not None:
在访问之前进行测试group
(如果 are.match
不匹配),但在这里由于结果是由 创建的finditer
,因此可以保证您获得匹配对象,而不是None
推荐阅读
- python - Tkinter:NameError:未定义名称“方程式”
- three.js - 使用 DRACOLoader 时纹理映射不正确
- python - 为什么 `heapq.heapify` 实现有效?
- shibboleth - Shibboleth SSO 连接到 SP 或维护用户存储
- c++ - 为什么我的 8 字节内的 unsigned long long int 输出错误?
- javascript - 提取根后如何获得准确的数字幂
- algorithm - 复杂调度的启发式
- vim - 使用 vim 编辑器设置时如何在 Google Colab 中导航黑白单元格?
- node.js - 将 PHP Curl 转换为 nodeJs 请求的问题
- flutter - 如何更改 Flutter 中的 MainActivity.kt 文件?