[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-settings":3,"footer-friends":48,"tag-projects-pandas":63,"tag-posts-pandas":73,"sidebar-tags":114,"sidebar-donations":263,"ad-sidebar_top":269,"ad-sidebar_mid":271,"ad-sidebar_bottom":273},{"alipayQr":4,"beianNumber":5,"commentsRequireApproval":6,"contactEmail":7,"copyrightNotice":5,"donationEnabled":6,"emailCodeExpireMinutes":8,"enableRegistration":6,"followBilibiliUrl":9,"followGithubUrl":10,"followQqGroup":11,"followQqQr":12,"followWechatQr":13,"footerHtml":5,"gaTrackingId":5,"heroEnabled":6,"heroSearchPlaceholder":5,"heroSubtitle":14,"heroTitle":15,"homeCategoryTabsCount":16,"homePageSize":17,"homeProjectsCount":18,"homeSpecialsCount":19,"homeToolsCount":18,"icpNumber":20,"inviteDefaultQuota":21,"inviteRequired":22,"logoUrl":23,"mailPasswordChangedBody":24,"mailPasswordChangedSubject":25,"mailRegisterCodeBody":26,"mailRegisterCodeSubject":27,"mailResetCodeBody":28,"mailResetCodeSubject":29,"mailWelcomeBody":30,"mailWelcomeSubject":31,"miniappAppid":32,"miniappEnabled":6,"profileAvatar":33,"profileBio":34,"profileName":35,"profileWechatQr":36,"promoteEnabled":6,"promoteNotice":5,"promoteWechat":5,"requireEmailVerify":6,"sectionArticleEnabled":6,"sectionArticleTitle":37,"sectionProjectsEnabled":6,"sectionProjectsTitle":38,"sectionSpecialEnabled":6,"sectionSpecialTitle":39,"sectionToolsEnabled":6,"sectionToolsTitle":40,"seoAuthor":41,"seoBaiduTongjiId":5,"seoBaiduVerify":5,"seoCanonicalEnabled":6,"seoDescription":42,"seoGoogleVerify":5,"seoKeywords":5,"seoOgImage":23,"seoRobots":5,"seoSitemapEnabled":6,"seoTitle":43,"seoTitleTemplate":44,"showHeroStats":6,"showSidebarDonations":6,"showSidebarFeedback":6,"showSidebarFollowUs":6,"showSidebarProfile":6,"showSidebarTagCloud":6,"siteDescription":42,"siteFavicon":45,"siteName":41,"siteUrl":46,"wechatQr":47},"\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790628031878385634.png","","true","enghin110@qq.com","10","https:\u002F\u002Fspace.bilibili.com\u002F470616503","https:\u002F\u002Fgithub.com\u002Fitwuge","606262780","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790627647190853446.png","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790627638856258082.jpg","精选 AI 教程、开源项目与实用工具，助你从入门到精通","探索人工智能的无限可能","6","7","4","3","赣ICP备2023014108号-2","5","false","\u002Fimages\u002Flogo\u002Flogo.png","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 16px;font-size:20px;color:#1e293b;\">🔒 账户密码修改成功\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">\n    你好，\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>，你的账户密码已于刚刚修改成功。\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f8fafc;border-radius:10px;margin:8px 0 4px;\">\n    \u003Ctr>\u003Ctd style=\"padding:14px 18px;font-size:13px;line-height:2;color:#475569;\">\n      账户用户名：\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>\u003Cbr>\n      账户邮箱：\u003Cstrong style=\"color:#1e293b;\">{email}\u003C\u002Fstrong>\u003Cbr>\n      修改时间：\u003Cstrong style=\"color:#1e293b;\">{change_time}\u003C\u002Fstrong>\n    \u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:16px 0 0;font-size:13px;line-height:1.8;color:#64748b;\">\n    如果这是你本人的操作，请忽略本邮件；\u003Cstrong style=\"color:#dc2626;\">如果不是你本人操作，说明账户密码可能已泄露\u003C\u002Fstrong>，\n    请立即使用「忘记密码」功能重置密码，并通过页脚联系邮箱告知站长。\n  \u003C\u002Fp>\n  \n  \u003Cp style=\"text-align:center;margin:28px 0 8px;\">\n    \u003Ca href=\"{site_url}\" style=\"display:inline-block;padding:12px 36px;background:#3b82f6;color:#ffffff;font-size:15px;font-weight:bold;text-decoration:none;border-radius:8px;\">进入{site_name}\u003C\u002Fa>\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】你的账户密码已修改","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 16px;font-size:20px;color:#1e293b;\">注册邮箱验证码\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">欢迎注册 \u003Cstrong>{site_name}\u003C\u002Fstrong>！感谢你的加入，请使用下方验证码完成邮箱验证：\u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:22px 0;\">\n        \u003Cspan style=\"font-size:32px;font-weight:bold;letter-spacing:10px;color:#3b82f6;font-family:Consolas,Menlo,monospace;\">{code}\u003C\u002Fspan>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:12px 0 0;font-size:13px;color:#64748b;\">\n    验证码 \u003Cstrong style=\"color:#dc2626;\">{expire} 分钟\u003C\u002Fstrong> 内有效，为保障账户安全，请勿向他人泄露。\n  \u003C\u002Fp>\n  \u003Chr style=\"border:none;border-top:1px solid #e2e8f0;margin:24px 0;\">\n  \n  \u003Cp style=\"margin:0 0 12px;font-size:14px;line-height:1.8;color:#475569;\">\n    这里是 \u003Cstrong style=\"color:#1e293b;\">{site_name}\u003C\u002Fstrong>，{site_description}\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#eff6ff;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">📚\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#1e40af;margin-top:4px;\">精选教程\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">从入门到实战\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#ecfdf5;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🚀\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#065f46;margin-top:4px;\">开源项目\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">精选可部署方案\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"34%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#fff7ed;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🧰\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#9a3412;margin-top:4px;\">在线工具\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">即开即用提效\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:20px 0 0;font-size:12px;line-height:1.8;color:#94a3b8;\">\n    如果这不是你本人的操作，请忽略本邮件，你的账户安全不会受到影响。\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】注册验证码","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 16px;font-size:20px;color:#1e293b;\">找回密码验证码\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">你正在找回账户密码，请使用下方验证码完成重置操作：\u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:22px 0;\">\n        \u003Cspan style=\"font-size:32px;font-weight:bold;letter-spacing:10px;color:#3b82f6;font-family:Consolas,Menlo,monospace;\">{code}\u003C\u002Fspan>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:12px 0 0;font-size:13px;color:#64748b;\">\n    验证码 \u003Cstrong style=\"color:#dc2626;\">{expire} 分钟\u003C\u002Fstrong> 内有效，为保障账户安全，请勿向他人泄露。\n  \u003C\u002Fp>\n  \u003Chr style=\"border:none;border-top:1px solid #e2e8f0;margin:24px 0;\">\n  \n  \u003Cp style=\"margin:0 0 12px;font-size:14px;line-height:1.8;color:#475569;\">\n    这里是 \u003Cstrong style=\"color:#1e293b;\">{site_name}\u003C\u002Fstrong>，{site_description}\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#eff6ff;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">📚\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#1e40af;margin-top:4px;\">精选教程\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">从入门到实战\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#ecfdf5;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🚀\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#065f46;margin-top:4px;\">开源项目\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">精选可部署方案\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"34%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#fff7ed;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🧰\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#9a3412;margin-top:4px;\">在线工具\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">即开即用提效\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:20px 0 0;font-size:12px;line-height:1.8;color:#94a3b8;\">\n    如果这不是你本人的操作，请忽略本邮件，你的账户安全不会受到影响。\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】找回密码验证码","\u003C!DOCTYPE html>\n\u003Chtml lang=\"zh-CN\">\n\u003Chead>\u003Cmeta charset=\"UTF-8\">\u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;padding:24px 0;background:#f1f5f9;font-family:'Microsoft YaHei','PingFang SC',Helvetica,Arial,sans-serif;\">\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f1f5f9;\">\n    \u003Ctr>\n      \u003Ctd align=\"center\" style=\"padding:0 16px;\">\n        \u003Ctable role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n          \u003C!-- 品牌头部 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#3b82f6;border-radius:12px 12px 0 0;padding:20px 28px;\">\n              \u003Cspan style=\"font-size:18px;font-weight:bold;color:#ffffff;\">\u003Ca href=\"{site_url}\" style=\"color:#ffffff;text-decoration:none;\">{site_name}\u003C\u002Fa>\u003C\u002Fspan>\n              \u003Cspan style=\"float:right;font-size:12px;color:#dbeafe;line-height:26px;\">{site_description}\u003C\u002Fspan>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 正文卡片 -->\n          \u003Ctr>\n            \u003Ctd style=\"background:#ffffff;padding:32px 28px;border-radius:0 0 12px 12px;box-shadow:0 2px 8px rgba(15,23,42,0.06);\">\n              \n  \u003Ch2 style=\"margin:0 0 4px;font-size:20px;color:#1e293b;\">🎉 欢迎加入 {site_name}！\u003Cspan style=\"display:inline-block;margin-left:8px;padding:2px 8px;background:#dcfce7;color:#15803d;font-size:12px;border-radius:10px;vertical-align:middle;\">邮箱已验证\u003C\u002Fspan>\u003C\u002Fh2>\n  \u003Cp style=\"margin:0 0 16px;font-size:14px;line-height:1.8;color:#475569;\">\n    你好，\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>，你的账户已注册成功。\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f8fafc;border-radius:10px;margin:8px 0 4px;\">\n    \u003Ctr>\u003Ctd style=\"padding:14px 18px;font-size:13px;line-height:2;color:#475569;\">\n      账户用户名：\u003Cstrong style=\"color:#1e293b;\">{username}\u003C\u002Fstrong>\u003Cbr>\n      注册邮箱：\u003Cstrong style=\"color:#1e293b;\">{email}\u003C\u002Fstrong>\u003Cbr>\n      注册奖励：\u003Cstrong style=\"color:#dc2626;\">+{register_points} 积分\u003C\u002Fstrong>已发放\n    \u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Chr style=\"border:none;border-top:1px solid #e2e8f0;margin:24px 0;\">\n  \n  \u003Cp style=\"margin:0 0 12px;font-size:14px;line-height:1.8;color:#475569;\">\n    这里是 \u003Cstrong style=\"color:#1e293b;\">{site_name}\u003C\u002Fstrong>，{site_description}\n  \u003C\u002Fp>\n  \u003Ctable role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:8px 0 4px;\">\n    \u003Ctr>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#eff6ff;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">📚\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#1e40af;margin-top:4px;\">精选教程\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">从入门到实战\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"33%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#ecfdf5;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🚀\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#065f46;margin-top:4px;\">开源项目\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">精选可部署方案\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n      \u003Ctd width=\"34%\" valign=\"top\" style=\"padding:6px;\">\n        \u003Cdiv style=\"background:#fff7ed;border-radius:8px;padding:14px 10px;text-align:center;\">\n          \u003Cdiv style=\"font-size:15px;\">🧰\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:13px;font-weight:bold;color:#9a3412;margin-top:4px;\">在线工具\u003C\u002Fdiv>\n          \u003Cdiv style=\"font-size:12px;color:#64748b;margin-top:2px;\">即开即用提效\u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cp style=\"margin:16px 0 0;font-size:14px;line-height:1.8;color:#475569;\">登录后你可以：\u003C\u002Fp>\n  \u003Cul style=\"margin:8px 0 0;padding-left:22px;font-size:14px;line-height:2;color:#475569;\">\n    \u003Cli>浏览、收藏优质内容与实用工具\u003C\u002Fli>\n    \u003Cli>投稿教程与项目，审核通过后获得积分奖励\u003C\u002Fli>\n    \u003Cli>参与评论、打分，与其他用户交流\u003C\u002Fli>\n    \u003Cli>通过签到、投稿、互动持续累积积分与等级\u003C\u002Fli>\n  \u003C\u002Ful>\n  \n  \u003Cp style=\"text-align:center;margin:28px 0 8px;\">\n    \u003Ca href=\"{site_url}\" style=\"display:inline-block;padding:12px 36px;background:#3b82f6;color:#ffffff;font-size:15px;font-weight:bold;text-decoration:none;border-radius:8px;\">进入{site_name}\u003C\u002Fa>\n  \u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n          \u003C!-- 页脚 -->\n          \u003Ctr>\n            \u003Ctd align=\"center\" style=\"padding:20px 16px 0;\">\n              \n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">联系邮箱：\u003Ca href=\"mailto:{contact_email}\" style=\"color:#64748b;text-decoration:none;\">{contact_email}\u003C\u002Fa>\u003C\u002Fp>\n              \u003Cp style=\"margin:6px 0 0;font-size:12px;color:#94a3b8;\">此邮件由系统自动发送，请勿直接回复 · © {year} {site_name}\u003C\u002Fp>\n            \u003C\u002Ftd>\n          \u003C\u002Ftr>\n        \u003C\u002Ftable>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>","【{site_name}】欢迎加入{site_name}，账户注册成功","7111479@qq.com","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790627623420492239.jpg","全栈开发者，专注 AI 应用与效率工具","武哥","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790629453503799753.png","热门爆款","精选项目","精选专题","精选工具","AI导航工具站","精选优质 AI 教程、AI 工具与开源项目，助力开发者快速上手人工智能","AI导航工具站 - AI 教程 · AI 项目 · AI 工具","%s - AI导航工具站","\u002Fimages\u002Flogo\u002Ffavicon.ico","https:\u002F\u002Fwuge.fun","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790628026196296604.png",[49,58],{"id":50,"name":51,"url":52,"logo":53,"description":51,"sortOrder":54,"status":55,"createdAt":56,"updatedAt":57},2,"哔哩哔哩","https:\u002F\u002Fwww.bilibili.com\u002F","\\images\\social\\bilibili.png",0,1,"0001-01-01T00:00:00Z","2026-09-29T04:44:41.867019475+08:00",{"id":55,"name":59,"url":60,"logo":61,"description":59,"sortOrder":54,"status":55,"createdAt":62,"updatedAt":62},"GitHub","https:\u002F\u002Fgithub.com","\\images\\social\\github.png","2026-09-29T04:32:39.65740234+08:00",{"items":64,"pagination":65,"tag":67},[],{"page":55,"pageSize":66,"total":54,"totalPages":55},12,{"id":68,"name":69,"slug":70,"color":71,"postCount":54,"createdAt":72},126,"Pandas","pandas","#e2e8f0","2026-09-29T06:55:38.411798198+08:00",{"items":74,"pagination":113},[75],{"id":76,"title":77,"slug":70,"summary":78,"content":79,"coverImage":80,"categoryId":81,"authorId":55,"viewCount":54,"likeCount":54,"commentCount":54,"isTop":54,"isRecommend":54,"status":55,"rejectReason":5,"publishedAt":82,"createdAt":83,"updatedAt":84,"category":85,"author":89,"tags":97},13,"Pandas 数据处理 10 个高频操作，一篇就够","日常数据分析 80% 的工作只用这 10 个操作：读写文件、筛选、分组聚合、缺失值处理、表合并。每个操作附可直接套用的代码模板。","## 为什么是 Pandas\n\n处理表格数据，Excel 能做的事 Pandas 都能做，而且：\n\n- **快**：几十万行数据秒级处理，Excel 早就卡死\n- **可复现**：代码写一次，下个月的新数据重新跑一遍就行\n- **可串联**：读数据 → 清洗 → 分析 → 出图一条龙\n\n```bash\npip install pandas openpyxl  # openpyxl 用于读写 Excel\n```\n\n## 准备演示数据\n\n后面的例子都用这份「销售数据」：\n\n```python\nimport pandas as pd\n\ndf = pd.DataFrame({\n    \"姓名\": [\"张三\", \"李四\", \"王五\", \"张三\", \"李四\", \"赵六\"],\n    \"部门\": [\"华东\", \"华北\", \"华东\", \"华东\", \"华北\", \"华南\"],\n    \"销售额\": [12000, 8500, 15000, 13500, None, 9000],\n    \"入职日期\": [\"2023-01-15\", \"2023-03-20\", \"2022-11-05\",\n                 \"2023-01-15\", \"2023-03-20\", \"2024-02-01\"],\n})\n```\n\n## 操作 1：读写 CSV \u002F Excel\n\n```python\n# 读取\ndf = pd.read_csv(\"sales.csv\")                      # CSV\ndf = pd.read_excel(\"sales.xlsx\", sheet_name=\"1月\")  # Excel 指定工作表\n\n# 中文乱码？指定编码\ndf = pd.read_csv(\"sales.csv\", encoding=\"gbk\")\n\n# 保存（index=False 去掉行号，utf-8-sig 保证 Excel 打开不乱码）\ndf.to_csv(\"output.csv\", index=False, encoding=\"utf-8-sig\")\ndf.to_excel(\"output.xlsx\", index=False)\n```\n\n## 操作 2：快速查看数据\n\n拿到任何数据，先做这四个动作：\n\n```python\ndf.head()        # 前 5 行长什么样\ndf.info()        # 每列的类型、有没有缺失\ndf.describe()    # 数值列的统计：均值\u002F最值\u002F分位数\ndf.shape         # 几行几列\n```\n\n## 操作 3：选列与筛选行\n\n```python\n# 选列\ndf[\"销售额\"]                    # 单列（Series）\ndf[[\"姓名\", \"销售额\"]]          # 多列（DataFrame）\n\n# 条件筛选（最常用的操作，没有之一）\ndf[df[\"销售额\"] > 10000]\ndf[df[\"部门\"] == \"华东\"]\ndf[(df[\"销售额\"] > 10000) & (df[\"部门\"] == \"华东\")]  # 多条件用 & |，必须加括号\n\n# 模糊匹配\ndf[df[\"姓名\"].str.contains(\"张\")]\n\n# 在列表内匹配\ndf[df[\"部门\"].isin([\"华东\", \"华南\"])]\n```\n\n## 操作 4：排序与去重\n\n```python\n# 排序\ndf.sort_values(\"销售额\", ascending=False)           # 按销售额降序\ndf.sort_values([\"部门\", \"销售额\"], ascending=[True, False])  # 先部门升序再销售额降序\n\n# 去重\ndf.drop_duplicates()                      # 整行重复才删\ndf.drop_duplicates(subset=[\"姓名\"])       # 同一人只留一条\ndf.drop_duplicates(subset=[\"姓名\"], keep=\"last\")  # 留最后一次出现的\n```\n\n## 操作 5：缺失值处理\n\n```python\n# 查看缺失情况\ndf.isna().sum()      # 每列有几个缺失\n\n# 处理：三选一\ndf.dropna()                              # 1. 删掉含缺失的行\ndf[\"销售额\"].fillna(0)                   # 2. 填固定值\ndf[\"销售额\"].fillna(df[\"销售额\"].mean()) # 3. 填均值（数值列常用）\n```\n\n## 操作 6：分组聚合（groupby，核心中的核心）\n\n「按部门统计销售额」这类需求的标准答案：\n\n```python\n# 按部门分组，算销售额总和\ndf.groupby(\"部门\")[\"销售额\"].sum()\n\n# 一次算多个统计量\ndf.groupby(\"部门\")[\"销售额\"].agg([\"sum\", \"mean\", \"count\"])\n\n# 多列分组 + 不同列不同聚合\ndf.groupby(\"部门\").agg(\n    总销售额=(\"销售额\", \"sum\"),\n    人均销售额=(\"销售额\", \"mean\"),\n    人数=(\"姓名\", \"count\"),\n).reset_index()  # 把分组键变回普通列，方便后续处理\n```\n\n## 操作 7：新增计算列\n\n```python\n# 直接运算\ndf[\"提成\"] = df[\"销售额\"] * 0.05\n\n# 条件赋值：销售额过万的标记为「高」\nimport numpy as np\ndf[\"等级\"] = np.where(df[\"销售额\"] > 10000, \"高\", \"普通\")\n\n# 对文本列做处理\ndf[\"姓名长度\"] = df[\"姓名\"].str.len()\n```\n\n## 操作 8：表合并（merge 与 concat）\n\n```python\n# concat：上下堆叠（合并多个月份的同结构表格）\ndf_all = pd.concat([df_1月, df_2月, df_3月], ignore_index=True)\n\n# merge：左右拼接（类似 SQL 的 JOIN）\ndf_员工 = pd.DataFrame({\"姓名\": [\"张三\", \"李四\"], \"职级\": [\"P5\", \"P6\"]})\ndf.merge(df_员工, on=\"姓名\", how=\"left\")  # 左连接：保留左表全部行\n```\n\n`how` 的四种取值：`left`（保留左表）、`right`、`inner`（交集）、`outer`（并集）。日常 90% 用 `left`。\n\n## 操作 9：日期处理\n\n```python\n# 字符串转日期\ndf[\"入职日期\"] = pd.to_datetime(df[\"入职日期\"])\n\n# 提取年\u002F月\u002F星期几\ndf[\"入职年\"] = df[\"入职日期\"].dt.year\ndf[\"入职月\"] = df[\"入职日期\"].dt.month\n\n# 按月统计\ndf.groupby(df[\"入职日期\"].dt.to_period(\"M\"))[\"销售额\"].sum()\n\n# 日期差（算工龄）\ndf[\"工龄天数\"] = (pd.Timestamp.now() - df[\"入职日期\"]).dt.days\n```\n\n## 操作 10：透视表（pivot_table）\n\nExcel 透视表的代码版，多维交叉统计一把梭：\n\n```python\n# 行=部门，列=等级，值=销售额总和\ndf.pivot_table(\n    index=\"部门\",\n    columns=\"等级\",\n    values=\"销售额\",\n    aggfunc=\"sum\",\n    fill_value=0,      # 空位填 0\n    margins=True,      # 加合计行列\n)\n```\n\n## 避坑指南\n\n**1. SettingWithCopyWarning 警告**\n\n```python\n# 错误：先筛选再赋值，改的可能不是原表\ndf[df[\"部门\"] == \"华东\"][\"销售额\"] = 0\n\n# 正确：用 loc 一步定位\ndf.loc[df[\"部门\"] == \"华东\", \"销售额\"] = 0\n```\n\n**2. 链式赋值结果没生效**\n\nPandas 很多操作**返回新对象而不改原表**。要么接返回值：\n\n```python\ndf = df.dropna()  # 接返回值\n# 或者\ndf.dropna(inplace=True)  # 用 inplace 参数\n```\n\n**3. 数字被读成字符串**\n\nCSV 里带「¥」「,」的数字会被当成文本，先清洗再计算：\n\n```python\ndf[\"销售额\"] = df[\"销售额\"].str.replace(\"¥\", \"\").str.replace(\",\", \"\").astype(float)\n```\n\n## 写在最后\n\nPandas 的学习曲线不在语法而在**思维转换**：别写 for 循环逐行处理，学会用「向量化」的批量操作。遇到需求先问自己——这能不能用筛选、分组、合并这三板斧解决？90% 的情况答案是能。\n","\u002Fstatic\u002Fuploads\u002Fimages\u002F2026\u002F09\u002F29\u002F1790636138431846763.png",8,"2026-09-29T06:56:42.1304477+08:00","2026-09-29T06:55:38.43196821+08:00","2026-09-29T06:56:42.13052425+08:00",{"id":81,"name":86,"slug":87,"description":86,"icon":5,"sortOrder":54,"postCount":54,"parentId":54,"createdAt":88,"updatedAt":88},"Python专题","Python","2026-09-29T06:55:05.938571812+08:00",{"id":55,"username":90,"email":32,"phone":5,"nickname":91,"avatarUrl":92,"bio":5,"role":55,"status":55,"points":54,"lastLoginAt":93,"loginCount":94,"createdAt":95,"updatedAt":96},"wuge","站长","\u002Fstatic\u002Fuploads\u002Favatars\u002F2026\u002F09\u002F29\u002F1790630804049538805.jpg","2026-09-29T05:22:12.192245111+08:00",3,"2026-09-29T04:25:29.170055083+08:00","2026-09-29T05:26:46.960829427+08:00",[98,102,103,108],{"id":99,"name":87,"slug":100,"color":71,"postCount":54,"createdAt":101},6,"python","2026-09-29T04:25:30.347030306+08:00",{"id":68,"name":69,"slug":70,"color":71,"postCount":54,"createdAt":72},{"id":104,"name":105,"slug":106,"color":71,"postCount":54,"createdAt":107},127,"数据分析","shu-ju-fen-xi","2026-09-29T06:55:38.419436825+08:00",{"id":109,"name":110,"slug":111,"color":71,"postCount":54,"createdAt":112},128,"数据处理","shu-ju-chu-li","2026-09-29T06:55:38.426699835+08:00",{"page":55,"pageSize":66,"total":55,"totalPages":55},[115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,194,199,204,209,214,219,224,229,234,239,243,248,253,258],{"id":116,"name":117,"slug":118,"color":71,"postCount":54,"createdAt":119},150,"AI","ai","2026-09-29T06:55:38.743861502+08:00",{"id":121,"name":122,"slug":123,"color":71,"postCount":54,"createdAt":124},53,"AI 绘画","ai-hui-hua","2026-09-29T04:25:30.70107663+08:00",{"id":126,"name":127,"slug":128,"color":71,"postCount":54,"createdAt":129},94,"AIGC","aigc","2026-09-29T06:46:13.817043541+08:00",{"id":131,"name":132,"slug":133,"color":71,"postCount":54,"createdAt":134},81,"AI入门","ai-ru-men","2026-09-29T06:46:13.646321088+08:00",{"id":136,"name":137,"slug":138,"color":71,"postCount":54,"createdAt":139},113,"AI写作","ai-xie-zuo","2026-09-29T06:46:14.098797917+08:00",{"id":141,"name":142,"slug":143,"color":71,"postCount":54,"createdAt":144},95,"AI工具","ai-gong-ju","2026-09-29T06:46:13.849105815+08:00",{"id":146,"name":147,"slug":148,"color":71,"postCount":54,"createdAt":149},87,"AI技巧","ai-ji-qiao","2026-09-29T06:46:13.717351439+08:00",{"id":151,"name":152,"slug":153,"color":71,"postCount":54,"createdAt":154},92,"AI绘画","ai-hui-hua-2","2026-09-29T06:46:13.800506851+08:00",{"id":156,"name":157,"slug":158,"color":71,"postCount":54,"createdAt":159},88,"AI编程","ai-bian-cheng","2026-09-29T06:46:13.748934007+08:00",{"id":161,"name":162,"slug":163,"color":71,"postCount":54,"createdAt":164},104,"API","api","2026-09-29T06:46:13.964167454+08:00",{"id":166,"name":167,"slug":168,"color":71,"postCount":54,"createdAt":169},24,"Agent","agent","2026-09-29T04:25:30.481917452+08:00",{"id":171,"name":172,"slug":173,"color":71,"postCount":54,"createdAt":174},15,"Apache-2.0","apache-2-0","2026-09-29T04:25:30.413130076+08:00",{"id":176,"name":177,"slug":178,"color":71,"postCount":54,"createdAt":179},124,"BeautifulSoup","beautifulsoup","2026-09-29T06:55:38.372320794+08:00",{"id":181,"name":182,"slug":183,"color":71,"postCount":54,"createdAt":184},71,"C++","c","2026-09-29T04:25:30.832723566+08:00",{"id":186,"name":187,"slug":188,"color":71,"postCount":54,"createdAt":189},9,"C\u002FC++","c-c","2026-09-29T04:25:30.367438818+08:00",{"id":81,"name":191,"slug":192,"color":71,"postCount":54,"createdAt":193},"CPU 推理","cpu-tui-li","2026-09-29T04:25:30.360161464+08:00",{"id":195,"name":196,"slug":197,"color":71,"postCount":54,"createdAt":198},82,"ChatGPT","chatgpt","2026-09-29T06:46:13.65246271+08:00",{"id":200,"name":201,"slug":202,"color":71,"postCount":54,"createdAt":203},43,"ChatGPT 界面","chatgpt-jie-mian","2026-09-29T04:25:30.631791206+08:00",{"id":205,"name":206,"slug":207,"color":71,"postCount":54,"createdAt":208},109,"Coze","coze","2026-09-29T06:46:14.04772698+08:00",{"id":210,"name":211,"slug":212,"color":71,"postCount":54,"createdAt":213},89,"DeepSeek","deepseek","2026-09-29T06:46:13.756746391+08:00",{"id":215,"name":216,"slug":217,"color":71,"postCount":54,"createdAt":218},103,"Embedding","embedding","2026-09-29T06:46:13.931530378+08:00",{"id":220,"name":221,"slug":222,"color":71,"postCount":54,"createdAt":223},139,"Excel","excel","2026-09-29T06:55:38.596869557+08:00",{"id":225,"name":226,"slug":227,"color":71,"postCount":54,"createdAt":228},132,"FastAPI","fastapi","2026-09-29T06:55:38.496902061+08:00",{"id":230,"name":231,"slug":232,"color":71,"postCount":54,"createdAt":233},107,"Fine-tuning","fine-tuning","2026-09-29T06:46:14.010861283+08:00",{"id":235,"name":236,"slug":237,"color":71,"postCount":54,"createdAt":238},97,"Gamma","gamma","2026-09-29T06:46:13.863615311+08:00",{"id":94,"name":240,"slug":241,"color":71,"postCount":54,"createdAt":242},"Go","go","2026-09-29T04:25:30.324360969+08:00",{"id":244,"name":245,"slug":246,"color":71,"postCount":54,"createdAt":247},98,"Kimi","kimi","2026-09-29T06:46:13.871065157+08:00",{"id":249,"name":250,"slug":251,"color":71,"postCount":54,"createdAt":252},7,"LLM","llm","2026-09-29T04:25:30.353458642+08:00",{"id":254,"name":255,"slug":256,"color":71,"postCount":54,"createdAt":257},31,"LLMOps","llmops","2026-09-29T04:25:30.534990482+08:00",{"id":259,"name":260,"slug":261,"color":71,"postCount":54,"createdAt":262},101,"LangChain","langchain","2026-09-29T06:46:13.916898801+08:00",[264],{"id":55,"userId":265,"donorName":35,"amount":109,"message":266,"paymentMethod":267,"isAnonymous":54,"status":55,"createdAt":268},null,"加油","wechat","2026-09-29T04:45:44+08:00",{"materials":270},[],{"materials":272},[],{"materials":274},[]]