python 3.3 引入了string.casefold
方法,其效果和 string.lower
非常类似,都可以把字符串变成小写,那么它们之间有什么区别?什么时候该用string.casefold
而非string.lower
??
In [5]: name = 'Xu Zhoufeng'
In [6]: name.casefold()
Out[6]: 'xu zhoufeng'
In [7]: cname = 'Yu Dongfeng'
In [8]: cname.lower()
Out[8]: 'yu dongfeng'
유니코드의 경우
사용casefold
으아악lower()
은 ASCII, 즉'A-Z'
에만 유효하지만, 다른 언어에 소문자가 있으면 아무것도 할 수 없습니다. 문서에 제시된 예는 독일어로'ß'
의 소문자는'ss'
입니다(저도 이 내용을 이해하지 못합니다):요약하자면 중국어, 영어 환경에서는
lower()
을 계속 사용해도 문제가 없고, 다른 언어와 대문자를 처리해야 할 때는casefold()
을 사용하면 됩니다.https://docs.python.org/3/library/stdtypes.html#str.casefold