찾다

 >  Q&A  >  본문

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일 전949

모든 응답(1)나는 대답할 것이다

  • PHPz

    PHPz2017-04-17 17:23:54

    유니코드의 경우 casefold

    사용

    대소문자 구분은 소문자와 유사하지만 문자열에서 모든 대소문자 구분을 제거하기 때문에 더 공격적입니다. 예를 들어 독일어 소문자 'ß'는 이미 소문자이기 때문에 lower()는 'ß'에 대해 아무 작업도 수행하지 않으며, casefold()는 이를 "ss"로 변환합니다.

    lower()은 ASCII, 즉 'A-Z'에만 유효하지만, 다른 언어에 소문자가 있으면 아무것도 할 수 없습니다. 문서에 제시된 예는 독일어로 'ß'의 소문자는 'ss'입니다(저도 이 내용을 이해하지 못합니다):

    으아악

    요약하자면 중국어, 영어 환경에서는 lower()을 계속 사용해도 문제가 없고, 다른 언어와 대문자를 처리해야 할 때는 casefold()을 사용하면 됩니다.

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

    회신하다
    0
  • 취소회신하다