最近在学习Python基础和一些视频教学中,发现字符串的内置函数(built-in functions)中有2个方法的作用非常相似:casefold和lower:
str1='I love Python'str1.casefold()
str2=str1[:]
str2.lower()
以上示例中,最后的输出结果都是'i love python'。
那么这两个函数有什么区别呢?
首先想到的是,查看帮助,使用help方法:
>>>help(str.lower)
Help on method_descriptor:
lower(...)
S.lower()->str
Return a copy of the string S converted to lowercase.>>>help(str.casefold)
Help on method_descriptor:
casefold(...)
S.casefold()->str
Return a version of S suitablefor caseless comparisons.
结果发现,解释也看不懂。
然后doc.python,找到如下解释:
https://docs.python.org/3/library/stdtypes.html#str.casefold
结合其他一些搜索结果,得出这2个方法的区别如下:
lower() 只对 ASCII 也就是 'A-Z'有效,但是其它一些语言里面存在小写的情况就没办法了。文档里面举得例子是德语中'ß'的小写是'ss'。总结来说,汉语 & 英语环境下面,继续用 lower()没问题;要处理其它语言且存在大小写情况的时候再用casefold()。
使用IDLE测试一下:
参考:
https://docs.python.org/3/library/stdtypes.html#str.casefold
https://segmentfault.com/q/1010000004586740/a-1020000004586838