今日検索コンポーネントを作成していたとき、すべての文字を検索するかどうかに基づいて検索フィールドを選択したいと思いました。
したがって、次のコードがあります:
if q.isalpha():
query = query.filter(User.username.ilike(like_str))else:
query = query.filter(User.realname.ilike(like_str) )
しかし、中国語が含まれていてもisalphaが正しいと判断されることがわかりました。
テストの結果、str の isalpha メソッドは Unicode の判定において信頼性が低いことがわかりました。
Flask のデフォルトのパラメーターのデコードは UTF-8 です。したがって、functionisalpha() を使用する前に、encode('utf-8') を使用して再エンコードする必要があります。
テストは次のとおりです:
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
[関連推奨事項]
2. Pythonで文字列が文字で構成されているかどうかを確認する方法: string.isalpha()
以上がisalpha は Python 2.7 の Unicode をサポートしていませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。