如何在Python中将string转换为小写
有没有办法将string从大写,甚至部分大写转换为小写?
例如公里 – >公里。
s = "Kilometer" print(s.lower())  官方文档是str.lower() 。 
 这对于UTF-8中的非英文单词不起作用。 在这种情况下, decode('utf-8')可以帮助: 
 >>> s='Километр' >>> print s.lower() Километр >>> print s.decode('utf-8').lower() километр 
你可以做彼得说的话 ,或者如果你想让用户input你能做到的事情:
 raw_input('Type Something').lower() 
然后它会自动将它们input的内容转换为小写。
 注意:在Python 3.x及更高版本中, raw_input被重命名为input 。 
如何在Python中将string转换为小写?
有没有办法将整个用户input的string从大写,甚至是大写部分转换为小写?
例如公里 – >公里
规范Pythonic这样做的方式是
 >>> 'Kilometers'.lower() 'kilometers' 
但是,如果目的是做不区分大小写的匹配,你应该使用case-folding:
 >>> "MASSE" == "Maße" False >>> "MASSE".lower() == "Maße".lower() False >>> "MASSE".casefold() == "Maße".casefold() True 
这是Python 3中的一个str方法,但在Python 2中,您将需要查看PyICU或py2casefold – 这里有几个解答 。
Unicode Python 3
Python 3将 Unicode作为常规string处理:
 >>> string = 'Километр' >>> string 'Километр' >>> string.lower() 'километр' 
Unicode Python 2
 但是Python 2并没有将下面的代码粘贴到shell中,而是使用utf-8将string编码为一串字节。 
  lower不映射任何原生的Unicode对象会知道的变化,所以我们得到相同的string。 
 >>> string = 'Километр' >>> string '\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> string.lower() '\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> print string.lower() Километр 
在脚本中,Python将反对非ascii(从Python2.5开始,在Python2.4中警告)字节在一个没有给定编码的string中,因为预期的编码是不明确的。 有关更多信息,请参阅文档和PEP 263中的Unicode指导
使用Unicode文字,而不是文字
 所以我们需要一个unicodestring来处理这个转换,用unicode文字很容易实现: 
 >>> unicode_literal = u'Километр' >>> print unicode_literal.lower() километр 
 请注意,这些字节与str字节完全不同 – 转义字符是'\u'后跟2个字节的宽度,或者这些unicode字母的16位表示forms: 
 >>> unicode_literal u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' >>> unicode_literal.lower() u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' 
 现在,如果我们只有一个str的forms,我们需要把它转换为unicode 。  Python的Unicodetypes是一种通用编码格式,与其他大多数编码相比 ,它具有许多优点 。 我们可以使用unicode构造函数或str.decode方法与编解码器将str转换为unicode : 
 >>> unicode_from_string = unicode(string, 'utf-8') # "encoding" unicode from string >>> print unicode_from_string.lower() километр >>> string_to_unicode = string.decode('utf-8') >>> print string_to_unicode.lower() километр >>> unicode_from_string == string_to_unicode == unicode_literal True 
这两种方法都转换为unicodetypes – 和unicode_literal一样。
最佳实践,使用Unicode
build议您始终使用Unicode中的文本 。
软件只能在内部使用Unicodestring,在输出中转换为特定的编码。
必要时可以编码回来
 但是,要在str返回小写字母,请将pythonstring重新编码为utf-8 : 
 >>> print string Километр >>> string '\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> string.decode('utf-8') u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' >>> string.decode('utf-8').lower() u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' >>> string.decode('utf-8').lower().encode('utf-8') '\xd0\xba\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> print string.decode('utf-8').lower().encode('utf-8') километр 
所以在Python 2中,Unicode可以编码为Pythonstring,Pythonstring可以解码为Unicodetypes。
另外,你可以覆盖一些variables:
 s = input('UPPER CASE') lower = s.lower() 
如果你这样使用:
 s = "Kilometer" print(s.lower()) - kilometer print(s) - Kilometer 
它会在被调用时工作。
如果整个文本像“KILOMETER”那样是大写的,而你只希望第一个字符被小写,那么做
 text = "KILOMETER" result = text[:1] + text[1:].lower() print(result) 
但要小写整个string,请执行
 text = "KILOMETER" text = text.lower() print(text)