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

Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengesahan pydantic. Semak sama ada rentetan tidak mengandungi aksara tertentu

Pengesahan pydantic. Semak sama ada rentetan tidak mengandungi aksara tertentu

WBOY
WBOYke hadapan
2024-02-09 10:06:141276semak imbas

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

Kandungan soalan

Saya perlu memastikan bahawa rentetan itu tidak mengandungi aksara Cyrillic. Saya menyemaknya seperti ini:

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

Tetapi apabila saya menghantar rentetan yang mengandungi huruf Cyrillic ke medan content_en, tiada ralat yang dilemparkan.

Anggaran:

pydantic_core._pydantic_core.validationerror: 1 validation error for mymodel
...

Bagaimana untuk menyemak ia betul?

python 3.8

Padantik 2.5

Penyelesaian (terima kasih kepada @chepner):

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

Jawapan betul


Corak anda sepadan dengan mana-mana rentetan yang mengandungi sekurang-kurangnya satu aksara bukan Cyrillic, berbanding rentetan yang hanya terdiri daripada aksara bukan Cyrillic.

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

Corak yang betul ialah ^[^а-яА-Я]*$:

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

Atas ialah kandungan terperinci Pengesahan pydantic. Semak sama ada rentetan tidak mengandungi aksara tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam