오늘 검색 컴포넌트를 작성할 때 모든 문자에 대한 검색인지 여부에 따라 검색 필드를 선택하고 싶었습니다.
그래서 다음 코드가 있습니다:
if q.isalpha():
query = query.filter(User.username.ilike(like_str))else:
query = query. filter (User.realname.ilike(like_str))
그런데 중국어가 들어가도 isalpha가 참으로 판단되는 것을 발견했습니다.
테스트 결과 str의 isalpha 메서드가 유니코드를 판단하는 데 신뢰할 수 없는 것으로 나타났습니다.
Flask의 기본 매개변수 디코딩은 UTF-8입니다. 따라서 함수 isalpha()를 사용하기 전에 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에서 유니코드를 지원하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!