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