You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从单个文本文件中提取多个电子邮箱ID及电话号码

从混杂文本中提取电子邮箱与手机号的Python方案

针对你提供的混有HTTP响应头与JSON用户信息的文本,提供两种可直接使用的实现方式:

方案一:通用正则匹配(无结构文本也适用)

不需要依赖文本的固定结构,直接通过正则规则匹配所有符合格式的邮箱与手机号,适合杂乱无规律的大文本场景。

import re

# 正则规则可根据实际手机号/邮箱格式调整
email_pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'
# 手机号规则示例适配你提供的纯数字手机号片段,可自行修改适配其他格式
phone_pattern = r'\b\d{6,11}\b'

# 读取文本文件,替换为你自己的文件路径
with open('你的文件路径.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 提取所有匹配项并去重
emails = list(set(re.findall(email_pattern, content)))
phones = list(set(re.findall(phone_pattern, content)))

# 输出结果
print("提取到的邮箱:")
for e in emails:
    print(e)
print("\n提取到的手机号:")
for p in phones:
    print(p)

# 如需将结果保存到新文件可自行添加写文件逻辑

方案二:JSON结构解析(适配你提供的文本格式,准确率更高)

你给出的文本中所有有效信息都封装在JSON对象内,直接解析JSON字段可以避免正则误匹配,提取结果更精准。

import re
import json

# 读取文本文件,替换为你自己的文件路径
with open('你的文件路径.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 提取所有JSON片段
json_strings = re.findall(r'\{.*?\}', content, re.DOTALL)

emails = []
phones = []

for s in json_strings:
    try:
        data = json.loads(s)
        # 提取邮箱
        if data.get('email'):
            emails.append(data['email'])
        # 提取手机号,自动拼接国际区号
        if data.get('mobile') and data.get('phonecode'):
            full_phone = f"+{data['phonecode']} {data['mobile']}"
            phones.append(full_phone)
    except json.JSONDecodeError:
        continue

# 去重
emails = list(set(emails))
phones = list(set(phones))

# 输出结果
print("提取到的邮箱:")
for e in emails:
    print(e)
print("\n提取到的手机号:")
for p in phones:
    print(p)

样例运行结果

针对你提供的测试文本,运行方案二可得到如下输出:

  • 电子邮箱列表:
    • wand412@gmail.com
    • dxxxxxx@yahoo.com
    • xxxxxxx7@gmail.com
    • axxxx@gmail.com
    • dexxxx@gmail.com
  • 手机号列表:
    • +91 9xxxxxxx
    • +1 61xxxx
    • +91 73xxxxxx

内容的提问来源于stack exchange,提问作者D - Lord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:36:07