isalpha ne prend pas en charge Unicode dans Python 2.7

Y2J
Libérer: 2017-05-18 15:07:33
original
1866 Les gens l'ont consulté

Lorsque j'écrivais un composant de recherche aujourd'hui, je voulais sélectionner le champ de recherche selon que la recherche portait sur toutes les lettres.
Il y a donc le code suivant :

if q.isalpha():
query = query.filter(User.username.ilike(like_str))else:
query = query. filter (User.realname.ilike(like_str))

Mais j'ai trouvé que même s'il contient du chinois, isalpha est jugé vrai.
Le test a révélé que la méthode isalpha in str n'est pas fiable pour juger Unicode.
Le décodage des paramètres par défaut dans Flask est UTF-8. Par conséquent, vous devez utiliser encode('utf-8') pour le ré-encoder avant que la fonction isalpha() puisse être utilisée.
Le test est le suivant :

In [15]: u"张 x".isalpha()
Out[15]: TrueIn [16]: "张 x".isalpha()Out[16]: False
In [17]: "aac".isalpha()
Out[17]: True
In [18]: u"张 x".encode('utf-8').isalpha()
Out[18]: False
Copier après la connexion

[Recommandations associées]

1 Tutoriel vidéo gratuit Python

2. en python Méthode pour vérifier si une chaîne est constituée de lettres : string.isalpha()

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!

Étiquettes associées:
source:php.cn
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