Vérification pydantique. Vérifier si une chaîne ne contient pas certains caractères

WBOY
Libérer: 2024-02-09 10:06:14
avant
1238 Les gens l'ont consulté

Pydantic 验证。检查字符串是否不包含某些字符

Contenu de la question

Je dois m'assurer que la chaîne ne contient pas de caractères cyrilliques. Je vérifie comme ceci :

from pydantic import basemodel, field

class mymodel(basemodel):
    content_en: str = field(pattern=r"[^а-яА-Я]")


data = mymodel(content_en="has wrong content 'йцукен'")
print(data)
>>> content_en="has wrong content 'йцукен'"
Copier après la connexion

Mais lorsque je transmets une chaîne contenant des lettres cyrilliques au champ content_en, aucune erreur n'est générée.

Estimé :

pydantic_core._pydantic_core.validationerror: 1 validation error for mymodel
...
Copier après la connexion

Comment vérifier qu'il est correct ?

python 3.8

Padantique 2.5

Solution (merci à @chepner) :

class MyModel(BaseModel):
    content_en: str = Field(pattern=r"^[^а-яА-ЯёЁ]*$")
Copier après la connexion


Bonne réponse


Votre modèle correspond à toute chaîne contenant au moins un caractère non cyrillique, par opposition à une chaîne composée uniquement de caractères non cyrilliques.

>>> mymodel(content_en="has wrong content 'йцукен'")
mymodel(content_en="has wrong content 'йцукен'")
>>> mymodel(content_en="йцукен")
traceback (most recent call last):
  file "<stdin>", line 1, in <module>
  file "/users/chepner/py311/lib/python3.11/site-packages/pydantic/main.py", line 164, in __init__
    __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)
pydantic_core._pydantic_core.validationerror: 1 validation error for mymodel
content_en
  string should match pattern '[^а-яА-Я]' [type=string_pattern_mismatch, input_value='йцукен', input_type=str]
    for further information visit https://errors.pydantic.dev/2.5/v/string_pattern_mismatch
Copier après la connexion

Le modèle correct est ^[^а-яА-Я]*$ :

>>> class MyModel(BaseModel):
...     content_en: str = Field(pattern=r"^[^а-яА-Я]*$")
...
>>> MyModel(content_en="Has wrong content 'йцукен'")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/chepner/py311/lib/python3.11/site-packages/pydantic/main.py", line 164, in __init__
    __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)
pydantic_core._pydantic_core.ValidationError: 1 validation error for MyModel
content_en
  String should match pattern '^[^а-яА-Я]*$' [type=string_pattern_mismatch, input_value="Has wrong content 'йцукен'", input_type=str]
    For further information visit https://errors.pydantic.dev/2.5/v/string_pattern_mismatch
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!