Pengesahan pydantic. Semak sama ada rentetan tidak mengandungi aksara tertentu

WBOY
Lepaskan: 2024-02-09 10:06:14
ke hadapan
1238 orang telah melayarinya

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

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
...
Salin selepas log masuk

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


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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!