0

0

Pydantic • 处理验证和清理数据

WBOY

WBOY

发布时间:2024-08-16 09:06:03

|

716人浏览过

|

来源于dev.to

转载

pydantic • 处理验证和清理数据

自从我开始编程以来,我主要使用结构化和过程范例,因为我的任务需要更实用和直接的解决方案。在处理数据提取时,我必须转向新的范式才能实现更有组织的代码。

这种必要性的一个例子是在抓取任务期间,当我需要捕获最初属于我知道如何处理的类型的特定数据时,但突然间,它在捕获过程中要么不存在,要么以不同的类型出现。

因此,我不得不添加一些 if'stry 和 catch 块来检查数据是 int 还是 string ...后来发现什么都没有捕获,没有等等。有了字典,我最终保存了在以下情况下一些无趣的“默认数据”:

data.get(values, 0)

好吧,令人困惑的错误消息肯定不能再出现了。

这就是python 的动态性。变量可以随时更改其类型,直到您需要更清楚地了解正在使用的类型为止。然后突然出现一堆信息,现在我正在阅读如何处理数据验证,ide 可以帮助我处理类型提示和有趣的 pydantic 库。

现在,在数据操作等任务中,使用新范例,我可以拥有显式声明其类型的对象,以及允许验证这些类型的库。如果出现问题,通过查看更好描述的错误信息来调试会更容易。


派丹提克

所以,这是 pydantic 文档。有更多问题,咨询一下总是好的。

诚石C2C交易系统
诚石C2C交易系统

1. 页面全部经过SEO(搜索引擎优化)处理 2. 支持IE、FireFox等主流浏览器,在IE 和FireFox下显示相同的效果 3. 符合W3C国际网页标准,页面全部采用DIV+CSS布局 4. 采用SQL server数据库,所有数据库操作采用存储过程 5. 部分功能采用AJAX技术,良好的用户体验。 6. 后台集成在线HTML编辑软件FCKEditor,自定义美观的内容

下载

基本上,正如我们所知,我们从以下开始:

pip install pydantic

然后,假设我们想要从包含这些电子邮件的源中捕获电子邮件,其中大多数看起来像这样:“xxxx@xxxx.com”。但有时,它可能是这样的:“xxxx@”或“xxxx”。我们对应该捕获的电子邮件格式毫无疑问,因此我们将使用 pydantic 验证此电子邮件字符串:

from pydantic import basemodel, emailstr

class consumer(basemodel):
    email: emailstr
    account_id: int

consumer = consumer(email="teste@teste", account_id=12345)

print(consumer)

请注意,我使用了可选依赖项“email-validator”,安装方式为:pip install pydantic[email]。正如我们所知,当您运行代码时,错误将是无效的电子邮件格式“teste@teste”:

traceback (most recent call last):
  ...
    consumer = consumer(email="teste@teste", account_id=12345)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ...: 1 validation error for consumer
email
  value is not a valid email address: the part after the @-sign is not valid. it should have a period. [type=value_error, input_value='teste@teste', input_type=str]

使用可选依赖项来验证数据很有趣,就像创建我们自己的验证一样,pydantic 通过 field_validator 允许这样做。因此,我们知道 account_id 必须为正且大于零。如果不同,pydantic 警告存在异常(值错误)会很有趣。代码将是:

from pydantic import basemodel, emailstr, field_validator

class consumer(basemodel):
    email: emailstr
    account_id: int

    @field_validator("account_id")
    def validate_account_id(cls, value):
        """custom field validation"""
        if value <= 0:
            raise valueerror(f"account_id must be positive: {value}")
        return value

consumer = consumer(email="teste@teste.com", account_id=0)

print(consumer)
$ python capture_emails.py
traceback (most recent call last):
...
    consumer = consumer(email="teste@teste.com", account_id=0)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

...: 1 validation error for consumer
account_id
  value error, account_id must be positive: 0 [type=value_error, input_value=0, input_type=int]
    for further information visit https://errors.pydantic.dev/2.8/v/value_error

现在,使用正确的值运行代码:

from pydantic import basemodel, emailstr, field_validator

class consumer(basemodel):
    email: emailstr
    account_id: int

    @field_validator("account_id")
    def validate_account_id(cls, value):
        """custom field validation"""
        if value <= 0:
            raise valueerror(f"account_id must be positive: {value}")
        return value

consumer = consumer(email="teste@teste.com", account_id=12345)

print(consumer)
$ python capture_emails.py
email='teste@teste.com' account_id=12345

对吗?!

我还阅读了一些有关本机“dataclasses”模块的内容,该模块更简单一些,并且与 pydantic 有一些相似之处。然而,pydantic 更适合处理需要验证的更复杂的数据模型。 dataclasses 原生包含在 python 中,而 pydantic 还没有——至少现在还没有。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

373

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

434

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

799

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

370

2025.07.23

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

990

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

846

2023.08.22

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

739

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

220

2023.09.04

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

24

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号