Pydantische Überprüfung. Überprüfen Sie, ob eine Zeichenfolge bestimmte Zeichen nicht enthält

WBOY
Freigeben: 2024-02-09 10:06:14
nach vorne
1238 Leute haben es durchsucht

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

Frageninhalt

Ich muss sicherstellen, dass die Zeichenfolge keine kyrillischen Zeichen enthält. Ich überprüfe es so:

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 'йцукен'"
Nach dem Login kopieren

Aber wenn ich eine Zeichenfolge mit kyrillischen Buchstaben an das Feld content_en übergebe, wird kein Fehler ausgegeben.

Geschätzte:

pydantic_core._pydantic_core.validationerror: 1 validation error for mymodel
...
Nach dem Login kopieren

Wie kann ich überprüfen, ob es korrekt ist?

Python 3.8

Padantik 2,5

Lösung (danke an @chepner):

class MyModel(BaseModel):
    content_en: str = Field(pattern=r"^[^а-яА-ЯёЁ]*$")
Nach dem Login kopieren


Richtige Antwort


Ihr Muster entspricht jeder Zeichenfolge, die mindestens ein nicht-kyrillisches Zeichen enthält, nicht einer Zeichenfolge, die nur aus nicht-kyrillischen Zeichen besteht.

>>> 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
Nach dem Login kopieren

Das richtige Muster ist ^[^а-яА-Я]*$:

>>> 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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPydantische Überprüfung. Überprüfen Sie, ob eine Zeichenfolge bestimmte Zeichen nicht enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!