> >content_en="haswrongcontent'йцукен'""/> > >content_en="haswrongcontent'йцукен'"">

Heim  >  Artikel  >  Backend-Entwicklung  >  Pydantische Überprüfung. Überprüfen Sie, ob eine Zeichenfolge bestimmte Zeichen nicht enthält

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

WBOY
WBOYnach vorne
2024-02-09 10:06:141243Durchsuche

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

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
...

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"^[^а-яА-ЯёЁ]*$")

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen