2017-10-11 40 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节中描述。