検索

ホームページ  >  に質問  >  本文

python3.x - python 的 string.casefold 和 string.lower 方法区别?

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'
伊谢尔伦伊谢尔伦2804日前952

全員に返信(1)返信します

  • PHPz

    PHPz2017-04-17 17:23:54

    Unicode には casefold

    を使用します

    大文字小文字の区別は小文字化に似ていますが、文字列内のすべての大文字と小文字の区別を削除することを目的としているため、より積極的です。たとえば、ドイツ語の小文字「ß」はすでに小文字であるため、「ss」と同等です。 lower() は 'ß' に対して何も行いません。casefold() はそれを "ss" に変換します。

    lower() は ASCII、つまり 'A-Z' に対してのみ有効ですが、他の言語で小文字が含まれる場合はどうすることもできません。ドキュメントに示されている例では、ドイツ語の 'ß' の小文字は 'ss' です (これも理解できません):

    リーリー

    要約すると、中国語と英語の環境では、引き続き lower() を使用しても問題ありません。他の言語や大文字を扱う必要がある場合は、casefold() を使用してください。

    https://docs.python.org/3/library/stdtypes.html#str.casefold

    返事
    0
  • キャンセル返事