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

修改邮件验证API批量处理代码以追加姓名及地址信息

解决'dict' object is not callable错误并追加用户信息到输出文件

错误原因分析

这个错误基本是以下两种情况导致的:

  • 把字典对象当成函数调用了,比如写了data('EmailAdditionalInfo')或者data['EmailAdditionalInfo'](),正确的字典取值应该用方括号[],不带括号
  • 变量名和Python内置类型冲突,比如把解析后的响应命名为dict,覆盖了内置的dict类型,后续操作就会报错

修改后的完整代码示例

假设你的原代码基于requests库,以下是调整后的版本,能正确提取姓名、地址并写入文件:

import requests

# 替换成你的API密钥和文件路径
API_TOKEN = "your_actual_api_key"
INPUT_EMAIL_LIST = "emails.txt"
OUTPUT_VALID_FILE = "valid.txt"

def validate_email_and_write(email):
    email = email.strip()
    if not email:
        return
    
    # 构造API请求URL
    api_url = f"https://api.website.net/?email={email}&token={API_TOKEN}"
    try:
        response = requests.get(api_url, timeout=10)
        response.raise_for_status()  # 捕获HTTP请求错误
        data = response.json()
        
        # 判断邮件是否有效(根据API实际返回的标识字段调整,比如is_valid)
        if data.get("is_valid", False):
            mx_record = data.get("mx_record", "")
            # 安全获取嵌套的附加信息字典,避免键不存在报错
            additional_info = data.get("EmailAdditionalInfo", {})
            # 提取子字段,用get避免KeyError
            firstname = additional_info.get("Firstname", "")
            lastname = additional_info.get("Lastname", "")
            address = additional_info.get("Address", "")
            
            # 写入文件,格式可以按需调整(比如用制表符/逗号分隔)
            output_line = f"{email}\t{mx_record}\t{firstname}\t{lastname}\t{address}\n"
            with open(OUTPUT_VALID_FILE, "a", encoding="utf-8") as out_file:
                out_file.write(output_line)
    except Exception as e:
        print(f"处理邮件 {email} 时出错: {str(e)}")

# 批量处理邮件列表
if __name__ == "__main__":
    with open(INPUT_EMAIL_LIST, "r", encoding="utf-8") as in_file:
        for email_line in in_file:
            validate_email_and_write(email_line)

关键注意事项

  • 字典取值不要加括号:比如additional_info.get('Firstname')是正确的,不要写成additional_info('Firstname')或者additional_info['Firstname']()
  • 用get()方法安全取值:避免因API返回字段缺失导致的KeyError,同时可以指定默认值
  • 避免变量名冲突:不要用dict、list这类内置类型名做变量名,比如不要写dict = response.json()

内容的提问来源于stack exchange,提问作者Nicole Steven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:40:07