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'
Unicode には
を使用しますcasefold
リーリーlower()
は ASCII、つまり'A-Z'
に対してのみ有効ですが、他の言語で小文字が含まれる場合はどうすることもできません。ドキュメントに示されている例では、ドイツ語の'ß'
の小文字は'ss'
です (これも理解できません):要約すると、中国語と英語の環境では、引き続き
lower()
を使用しても問題ありません。他の言語や大文字を扱う必要がある場合は、casefold()
を使用してください。https://docs.python.org/3/library/stdtypes.html#str.casefold