Pydantic • 处理验证和清理数据

pydantic • 处理验证和清理数据

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

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

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

data.get(values, 0)

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

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

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

派丹提克

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

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

pip install pydantic

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

from pydantic import basemodel, emailstrclass consumer(basemodel):    email: emailstr    account_id: intconsumer = 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 consumeremail  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_validatorclass 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 valueconsumer = consumer(email="teste@teste.com", account_id=0)print(consumer)
$ python capture_emails.pytraceback (most recent call last):...    consumer = consumer(email="teste@teste.com", account_id=0)               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...: 1 validation error for consumeraccount_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_validatorclass 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 valueconsumer = consumer(email="teste@teste.com", account_id=12345)print(consumer)
$ python capture_emails.pyemail='teste@teste.com' account_id=12345

对吗?!

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

以上就是Pydantic • 处理验证和清理数据的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 12:31:19
下一篇 2025年12月13日 12:31:29

相关推荐

  • 什么是 Python GIL?它是如何运作的?

    在阅读本文之前您应该了解的事情: 什么是并行?什么是并发?什么是死锁?什么是种族并发?什么是流程?什么是线程? 介绍 全局解释器锁,是一种保护对Python对象的访问并仔细控制线程执行的锁,防止数据访问和修改中的竞争并发,确保一次只有一个线程可以执行Python代码。 如果没有 GIL,Python…

    2025年12月13日
    000
  • SageMath 安装

    sagemath 是一个免费的开源数学软件系统,它构建在许多现有的开源软件包之上,包括 numpy、scipy、matplotlib、sympy、maxima、gap、flint、r 等。与 magma、maple、mathematica 和 matlab 等专有软件不同,sage 可以免费使用,并…

    2025年12月13日
    000
  • 将 Google 日历连接到 Django 应用程序

    将 google 日历与 django 应用程序无缝集成以增强日程安排和事件管理的分步指南。 将 google 日历与 django 应用程序集成可以通过启用日程安排、事件管理和日历同步来显着增强 web 应用程序的功能。本指南将引导您完成将 google 日历连接到 django 应用程序的步骤,…

    2025年12月13日
    000
  • 我使用 Python 自动化 XML 字段检查的那一天

    这一切都始于我接受检查多个 xml 文件是否缺少字段的任务。在我们继续下一步之前,团队需要确保这些文件中存在所有必填字段。听起来很简单,对吧?嗯,不完全是。 我打开第一个 xml 文件,扫描属性,手动查找必填字段,然后勾选相应的框。正如你所预料的那样,很快就会感到疲倦。在一个文件中只看了几分钟后,我…

    2025年12月13日
    000
  • streamlit教程 Streamlit新手入门指南

    Streamlit 学习指南:数据科学简化Streamlit是一款Python库,用于创建交互式Web应用程序,特别是用于数据科学和机器学习。它的优势包括:简单性:无需Web开发知识交互性:用户可输入参数和查看可视化可移植性:可在任何有浏览器的设备上运行协作性:易于共享和协作指南涵盖了安装、应用程序…

    2025年12月13日
    000
  • streamlit怎么布局控件

    在 Streamlit 中,布局控件主要有 6 种方式:侧边栏控件:用于应用程序侧边栏,可添加文本输入、复选框等控件。主体控件:用于应用程序主体区域,包含文本输入、复选框等控件。行和列布局:使用 st.columns 和 st.rows 创建行和列,方便控件组织。选项卡布局:使用 st.tabs 创…

    2025年12月13日
    000
  • streamlit编写登录界面

    在 Streamlit 中编写登录界面涉及以下步骤:创建一个表单,其中包含用户名和密码输入字段。验证用户提交的输入,检查其是否与预期的值匹配。使用 st.info、st.success 和 st.error 小部件显示提示消息。使用 st.set_page_config 小部件自定义界面的外观和布局…

    2025年12月13日
    000
  • streamlit中文手册

    Streamlit 是一个 Python 库,用于构建和部署交互式机器学习和数据科学应用程序,无需复杂的 Web 开发知识。它提供了多种内置组件和函数,简化了应用程序开发,使其快速、交互且易于部署。 Streamlit 中文手册 什么是 Streamlit? Streamlit 是一个用于构建和部署…

    2025年12月13日
    000
  • streamlit可以做网站吗

    是的,Streamlit 可用于创建交互式网站。它是一个开源 Python 库,消除了编写复杂代码的需要,使数据应用程序的构建、部署和共享变得简单。使用 Streamlit 创建网站的步骤包括:安装库、创建 Python 脚本、使用 Streamlit 组件构建界面、处理用户输入、运行脚本并部署网站…

    2025年12月13日
    000
  • streamlit官网

    Streamlit 官方网站 (https://streamlit.io) 面向希望使用 Python 构建交互式数据应用程序的 Python 开发人员、数据科学家和软件工程师。它提供教程、示例、社区论坛和博客,以支持用户学习和协作。网站设计简洁、易于导航,并针对移动设备进行了优化。 Streaml…

    2025年12月13日
    000
  • streamlit外网访问

    要让 Streamlit 应用程序实现外网访问,需执行以下步骤:获取公共 IP 地址。配置防火墙以允许传入连接至端口 8501。部署应用程序。使用 ngrok 创建隧道。打开隧道以获得可用于外部访问的公开 URL。 如何在 Streamlit 中实现外网访问 Streamlit 是一个用于创建和部署…

    2025年12月13日
    000
  • streamlit框架介绍

    Streamlit 是一款 Python 框架,用于构建交互式 Web 应用,具有快速开发、实时更新、部署简单和代码重用等优点。通过使用组件(例如文本输入框、地图和图表),开发者可以轻松创建应用,并使用回调函数处理用户交互。Streamlit 广泛用于数据可视化、机器学习演示和用户界面原型等领域。 …

    2025年12月13日
    000
  • streamlit怎么设置图片点击

    要在 Streamlit 中为图片设置点击事件,您可以:导入 Streamlit 并加载图像。定义一个回调函数来处理点击事件。将回调函数分配给 st.image 小部件的 on_click 属性。 如何在 Streamlit 中为图片设置点击事件 Streamlit 提供了一个名为 st.image…

    2025年12月13日
    000
  • streamlit怎么运行 streamlit中文教程

    如何本地运行 Streamlit:通过 pip install streamlit 安装 Streamlit编写 Streamlit 脚本,导入 streamlit 库并添加小组件通过 streamlit run my_app.py 运行应用(my_app.py 为脚本文件名)在浏览器中访问 htt…

    2025年12月13日
    000
  • streamlit怎么用 streamlit怎么安装

    Streamlit 的安装和使用:安装 Python 并在终端运行 “pip install streamlit”。创建一个 Python 脚本,导入 Streamlit 库并使用 st.title()、st.text_input() 和 st.line_chart() 等函…

    2025年12月13日
    000
  • streamlit怎么清空组件 streamlit自定义组件

    Streamlit 中可以使用 st.empty() 函数清空组件,此函数创建一个占位符,可后续填充以显示新内容。对于自定义组件,可以使用相同的函数清空其内容。 如何在 Streamlit 中清空组件 Streamlit 是一个 Python 库,用于创建交互式 Web 应用程序。它提供了一个名为 …

    2025年12月13日
    000
  • 了解您的数据:探索性数据分析的要点”

    探索性数据分析 (EDA) 正在分析数据集,以总结其主要特征、识别模式、发现异常并通常使用统计图形和其他数据可视化方法测试假设。它有助于总结数据并从数据集中发现见解。 探索性数据分析(EDA)涉及的典型步骤。 第 1 步:从数据库、网络抓取或 API 等各种来源收集所需数据。然后将数据和所需的库导入…

    2025年12月13日
    000
  • Python 常见陷阱

    我刚刚发表的一篇中等文章(更多内容即将发布),其中捕捉了我认为开始使用 python 的基本陷阱,很想听听有关它的意见。 https://medium.com/@snir-orlanczyk/python-common-pitfalls-and-how-to-avoid-them-c61e0d9ea…

    2025年12月13日
    000
  • Python环境设置

    我是一名 python 开发人员,通常随时使用多个存储库。大多数这些项目都有不同的依赖关系,因此我在每个项目中创建一个虚拟环境。我更喜欢在代码旁边创建虚拟环境。当在 pycharm 中打开存储库时,pycharm 也会检测到它。 此设置在大多数情况下都有效,但有时,我激活一个存储库的 venv,然后…

    2025年12月13日
    000
  • 使用 Uber hndexes 和 PostgreSQL 进行栅格分析

    嗨,在这篇博客中,我们将讨论如何使用 h3 索引轻松进行栅格分析。 客观的 为了学习,我们将计算出由 esri 土地覆盖确定的聚居区有多少建筑物。让我们针对矢量和栅格的国家级数据进行目标。 我们先找到数据 下载栅格数据 我已经从 esri land cover 下载了定居点区域。 https://l…

    2025年12月13日 好文分享
    000

发表回复

登录后才能评论
关注微信