🐍 Python
str.upper() / str.lower() / str.capitalize() / str.title()
文字列の大文字・小文字を変換する一連のメソッドです。表記ゆれを吸収した比較や、見出し用の整形など、地味ながらあらゆる文字列処理で使われます。
str.upper() # すべて大文字に
str.lower() # すべて小文字に
str.capitalize() # 先頭だけ大文字、残りは小文字に
str.title() # 各単語の先頭を大文字に
upper・lowerの基本
s = "Hello World"
print(s.upper()) # 'HELLO WORLD'
print(s.lower()) # 'hello world'
capitalize・titleの違い
capitalize()は文字列全体の最初の1文字だけを大文字にします。title()は単語ごとの先頭を大文字にします。
s = "python programming language"
print(s.capitalize()) # 'Python programming language'
print(s.title()) # 'Python Programming Language'
大文字・小文字を無視して比較する
ユーザー入力と定数を比較するとき、表記ゆれ(大文字・小文字の違い)を吸収したい場面は多くあります。両辺を.lower()してから比較するのが定番です。
a = "Docker"
b = "docker"
print(a.lower() == b.lower()) # True
casefoldとlowerの違い(多言語対応)
英語圏以外の文字を扱う場合、lower()では大文字小文字が完全に一致しないことがあります。ドイツ語の「ß」のような特殊な文字を含む比較ではcasefold()の方がより厳密に「同一視」してくれます。日本語や英語だけを扱う場面ではほぼ意識しなくてよい違いですが、国際化対応のコードをレビューするときに知っておくと役立ちます。
s1 = "STRASSE"
s2 = "straße"
print(s1.lower() == s2.lower()) # False
print(s1.casefold() == s2.casefold()) # True
4つのメソッドの違い
- upper()
- すべての文字を大文字に変換
- lower()
- すべての文字を小文字に変換
- capitalize()
- 文字列全体の最初の1文字だけ大文字、残りは小文字
- title()
- スペースなどで区切られた各単語の先頭文字を大文字に
💡 AIコードレビュー観点:大文字小文字を無視した比較でlower()の付け忘れがないか
ユーザー入力とキーワードを比較する条件式(if user_input == "yes":など)で、片方にしか.lower()が付いていないコードは要注意です。「Yes」と入力されると意図通り動かず、テストでは気づきにくいバグの温床になります。比較の両辺に同じ変換がかかっているかを必ず確認しましょう。