Python学习之路(2)——字符串方法casefold和lower的区别(Python3.5)
最近在学习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 suitable for 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