Python upper() / lower() 大小寫轉換

Python 提供多種字串大小寫轉換的方法。

upper() - 轉大寫

text = "Hello World"
result = text.upper()
print(result)  # HELLO WORLD

lower() - 轉小寫

text = "Hello World"
result = text.lower()
print(result)  # hello world

capitalize() - 首字母大寫

只有第一個字母大寫,其他都轉小寫:

text = "hello WORLD"
result = text.capitalize()
print(result)  # Hello world

title() - 每個單字首字母大寫

text = "hello world python"
result = text.title()
print(result)  # Hello World Python

# 注意:縮寫可能會有問題
text = "it's a beautiful day"
print(text.title())  # It'S A Beautiful Day

swapcase() - 大小寫互換

text = "Hello World"
result = text.swapcase()
print(result)  # hELLO wORLD

casefold() - 更徹底的小寫轉換

casefold()lower() 更激進,用於不區分大小寫的比較:

# 一般情況下兩者相同
text = "HELLO"
print(text.lower())     # hello
print(text.casefold())  # hello

# 對於某些特殊字元有差異
text = "ß"  # 德文的 sharp s
print(text.lower())     # ß
print(text.casefold())  # ss

檢查大小寫

text = "HELLO"
print(text.isupper())   # True(全部大寫)
print(text.islower())   # False

text = "hello"
print(text.isupper())   # False
print(text.islower())   # True(全部小寫)

text = "Hello"
print(text.isupper())   # False
print(text.islower())   # False

text = "Hello World"
print(text.istitle())   # True(標題格式)

字串是不可變的

這些方法都會回傳新字串,不會修改原字串:

text = "hello"
result = text.upper()

print(text)    # hello(原字串不變)
print(result)  # HELLO

實際範例

不區分大小寫的比較

input1 = "Hello"
input2 = "hello"

# 直接比較會失敗
print(input1 == input2)  # False

# 轉換後比較
print(input1.lower() == input2.lower())  # True
print(input1.upper() == input2.upper())  # True

# 使用 casefold()(推薦用於國際化)
print(input1.casefold() == input2.casefold())  # True

不區分大小寫的搜尋

text = "Hello World Python"
keyword = "PYTHON"

if keyword.lower() in text.lower():
    print("Found!")  # Found!

不區分大小寫的字典

data = {}
key = "Name"
data[key.lower()] = "Alice"

# 查詢時也轉小寫
search_key = "NAME"
print(data.get(search_key.lower()))  # Alice

格式化姓名

def format_name(name):
    return name.strip().title()

print(format_name("  john doe  "))  # John Doe
print(format_name("JANE SMITH"))    # Jane Smith

使用者輸入處理

response = input("Continue? (yes/no): ").strip().lower()

if response in ("yes", "y"):
    print("Continuing...")
elif response in ("no", "n"):
    print("Stopping...")
else:
    print("Invalid input")

處理命令

def process_command(command):
    cmd = command.strip().upper()
    
    if cmd == "START":
        print("Starting...")
    elif cmd == "STOP":
        print("Stopping...")
    elif cmd == "STATUS":
        print("Running")
    else:
        print(f"Unknown command: {command}")

process_command("start")   # Starting...
process_command("STOP")    # Stopping...
process_command("Status")  # Running

建立常數風格的變數名稱

def to_constant_name(name):
    return name.strip().upper().replace(" ", "_")

print(to_constant_name("max retry count"))  # MAX_RETRY_COUNT
print(to_constant_name("api key"))          # API_KEY

建立 URL slug

def to_slug(title):
    return title.lower().strip().replace(" ", "-")

print(to_slug("Hello World"))        # hello-world
print(to_slug("Python Programming")) # python-programming

組合使用

text = "  HELLO world  "

# 清理並格式化
result = text.strip().title()
print(result)  # Hello World

# 清理並轉小寫
result = text.strip().lower()
print(result)  # hello world