自從我開始程式設計以來,我主要使用結構化和流程範例,因為我的任務需要更實用和直接的解決方案。在處理資料擷取時,我必須轉向新的範式才能實現更有組織的程式碼。
這種必要性的一個例子是在抓取任務期間,當我需要捕獲最初屬於我知道如何處理的類型的特定數據時,但突然間,它要么不存在,要么在捕獲過程中以不同的類型出現.
因此,我必須添加一些if的和try和catch區塊來檢查資料是int還是string...後來發現什麼也沒捕獲,None等等。對於字典,我最終在以下情況下保存了一些無趣的「預設資料」:
data.get(values, 0)
嗯,令人困惑的錯誤訊息肯定必須停止出現。
這就是Python 的動態性。變數可以隨時變更其類型,直到您需要更清楚地了解正在使用的類型為止。然後突然出現一堆訊息,現在我正在閱讀如何處理資料驗證,IDE 幫助我處理類型提示和有趣的 pydantic 庫。
現在,在資料操作等任務中,透過新的範例,我可以擁有明確聲明其類型的對象,以及允許驗證這些類型的庫。如果出現問題,透過查看更好描述的錯誤訊息,調試會更容易。
所以,這是 Pydantic 文件。有更多問題,歡迎諮詢。
基本上,如我們所知,我們從以下開始:
pip install pydantic
然後,假設我們希望從包含這些電子郵件的來源中捕獲電子郵件,其中大多數看起來像這樣:「[email protected]」。但有時,它可能是這樣的:「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$ python capture_emails.py Traceback (most recent call last): ... consumer = Consumer(email="[email protected]", 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$ python capture_emails.py email='[email protected]' account_id=12345正確的? !
我還閱讀了一些關於本機「dataclasses」模組的內容,該模組更簡單一些,並且與 Pydantic 有一些相似之處。然而,Pydantic 更適合處理需要驗證的更複雜的資料模型。 Dataclasses 本來就包含在 Python 中,而 Pydantic 還沒有——至少現在還沒有。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3