2017-10-11 37 views
0

我有這樣的代碼忽略大寫在查詢中,巨蟒

query = request.GET.get("q") 
    if query: 
     if query == "song" or query == "songs": 
      return render(request, 'music/cloud.html', { 
       'songs': song_results, 
       'generic_songs': song_results_generic, 
      }) 

的事情是,我想要的「如果」語句ignor轉換爲大寫。 例如,當由「歌曲」或「歌曲」或..用戶搜索將測試

+0

與'query.lower()'比較。 –

+0

但是,當您使用lower()時,請確保您比較的內容也是「.lower()」,因爲python區分大小寫。 – Alex

+0

這個文本來自'request.get'的事實在這裏似乎並不重要,它只是不區分大小寫的字符串匹配。 –

回答

3

使用.lower()

if query.lower() in ['song', 'songs']: 
1

在Python3.3之前被轉換爲「歌曲」 + ,你應該更喜歡str.casefold

if query.casefold() in ['song'.casefold(), 'songs'.casefold()]: 

從文檔:

返回字符串的casefolded副本。可摺疊的字符串可用於無外殼匹配。

Casefolding與lowercasing類似,但更具侵略性,因爲它旨在刪除字符串中的所有大小寫區別。例如,德語小寫字母「ß」等同於「ss」。由於它已經是小寫字母,所以lower()對'ß'不起作用; casefold()將其轉換爲「ss」。

案例摺疊算法在Unicode標準的第3.13節中描述。