今天在寫一個搜尋元件時,我想根據搜尋的是否是全部字母來選擇搜尋的欄位。
所以有下面的程式碼:
if q.isalpha():
query = query.filter(User.username.ilike(like_str))else:
query = query.filter (User.realname.ilike(like_str))
但是發現就算裡面有中文也被判斷成 isalpha 為 true 了。
測試發現是 str 中方法 isalpha 對於 Unicode 的判斷有不可靠。
而 Flask 中預設對參數解碼都是 UTF-8 的。所以需要使用 encode('utf-8') 重新編碼之後 函數 isalpha() 才可用。
測試如下:
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
【相關推薦】
1. Python免費影片教學
2. python中檢查字符串是否由字母組成的方法:string.isalpha()
#以上是Python 2.7中isalpha 不支援 unicode的詳細內容。更多資訊請關注PHP中文網其他相關文章!