文字列処理
文字列の作成
様々な方法
# シングルクォート
name = 'Python'
# ダブルクォート
message = "Hello, World!"
# トリプルクォート(複数行)
text = """첫 번째 줄
두 번째 줄
세 번째 줄"""
poem = '''장미는 빨갛고
제비꽃은 파랗다'''
# エスケープシーケンス
quote = "He said, \"Hello!\""
path = "C:\\Users\\Documents"
new_line = "첫 줄\n두 번째 줄"
tab = "이름\t나이"
# raw文字列(エスケープを無視)
path = r"C:\Users\Documents"
文字列のインデックスとスライス
インデックス
text = "Python"
# 正のインデックス(左から: 0, 1, 2...)
print(text[0]) # P
print(text[1]) # y
print(text[5]) # n
# 負のインデックス(右から: -1, -2, -3...)
print(text[-1]) # n
print(text[-2]) # o
print(text[-6]) # P
# エラー
# print(text[10]) # IndexError
スライス
text = "Python Programming"
# [開始:終了] - 終了は含まない
print(text[0:6]) # Python
print(text[7:18]) # Programming
# 省略可能
print(text[:6]) # Python(最 初から)
print(text[7:]) # Programming(最後まで)
print(text[:]) # Python Programming(全体)
# 負のインデックス
print(text[-11:]) # Programming
print(text[:-12]) # Python
# ステップを指定 [開始:終了:ステップ]
print(text[::2]) # Pto rgamn(2文字ごと)
print(text[::-1]) # gnimmargorP nohtyP(逆順)
# 実用例
url = "https://www.example.com"
domain = url[8:-4] # www.example
print(domain)
文字列の演算
連結と繰り返し
# 連結(+)
first = "Hello"
second = "World"
greeting = first + " " + second
print(greeting) # Hello World
# 繰り返し(*)
line = "=" * 20
print(line) # ====================
border = "-" * 10
print(f"{border} 제목 {border}")
# ---------- 제목 ----------
# 複数の文字列を結合
words = ["Python", "is", "awesome"]
sentence = " ".join(words)
print(sentence) # Python is awesome
比較
# 等しい/等しくない
print("hello" == "hello") # True
print("hello" != "Hello") # True
# 大小比較(辞書順)
print("apple" < "banana") # True
print("apple" < "Apple") # False(大文字が先)
# 含まれるかどうか
text = "Python Programming"
print("Python" in text) # True
print("Java" in text) # False
print("Java" not in text) # True
文字列メソッド
大文字小文字の変換
text = "Hello, Python!"
print(text.upper()) # HELLO, PYTHON!
print(text.lower()) # hello, python!
print(text.capitalize()) # Hello, python!
print(text.title()) # Hello, Python!
print(text.swapcase()) # hELLO, pYTHON!
# 実用例 - ユーザー入力の正規化
user_input = " YES "
if user_input.strip().lower() == "yes":
print("확인되었습니다")
検索と確認
text = "Python Programming"
# 検索
print(text.find("Python")) # 0(最初の位置)
print(text.find("Java")) # -1(見つからない)
print(text.index("Programming")) # 7
# print(text.index("Java")) # ValueError
# カウント
print(text.count("o")) # 1
print(text.count("m")) # 3
# 開始/終了の確認
print(text.startswith("Python")) # True
print(text.endswith("ing")) # True
# 含まれるかの確認
print("gram" in text) # True
文字タイプの確認
# アルファベットのみ
print("abc".isalpha()) # True
print("abc123".isalpha()) # False
# 数字のみ
print("123".isdigit()) # True
print("12.3".isdigit()) # False
# アルファベット+数字
print("abc123".isalnum()) # True
print("abc 123".isalnum()) # False
# 空白のみ
print(" ".isspace()) # True
print(" a ".isspace()) # False
# 大文字/小文字
print("ABC".isupper()) # True
print("abc".islower()) # True
# 実用例 - パスワード検証
password = "Pass123"
has_digit = any(c.isdigit() for c in password)
has_upper = any(c.isupper() for c in password)
has_lower = any(c.islower() for c in password)
if len(password) >= 8 and has_digit and has_upper and has_lower:
print("강한 비밀번호입니다")
空白の削除
text = " hello world "
print(text.strip()) # "hello world"(両側)
print(text.lstrip()) # "hello world "(左)
print(text.rstrip()) # " hello world"(右)
# 特定の文字を削除
url = "https://example.com/"
print(url.strip("https://")) # example.com/
print(url.rstrip("/")) # https://example.com
# 実用例 - CSVパース
data = " 홍길동, 25, 서울 "
parts = [part.strip() for part in data.split(",")]
print(parts) # ['홍길동', '25', '서울']
変換と置換
text = "Hello, Python!"
# 置換
print(text.replace("Python", "World")) # Hello, World!
print(text.replace("l", "L")) # HeLLo, Python!
print(text.replace("l", "L", 1)) # HeLlo, Python!(1つだけ)
# 分割
words = text.split(", ")
print(words) # ['Hello', 'Python!']
csv = "홍길동,25,서울"
data = csv.split(",")
print(data) # ['홍길동', '25', '서울']
# 結合
words = ["Python", "is", "fun"]
sentence = " ".join(words)
print(sentence) # Python is fun
# 特定の文字で結合
print("-".join(words)) # Python-is-fun
# 行の分割
text = """첫 줄
두 번째 줄
세 번째 줄"""
lines = text.splitlines()
print(lines) # ['첫 줄', '두 번째 줄', '세 번째 줄']
整列
# 左揃え
print("Python".ljust(10)) # "Python "
print("Python".ljust(10, "-")) # "Python----"
# 右揃え
print("Python".rjust(10)) # " Python"
print("Python".rjust(10, "0")) # "0000Python"
# 中央揃え
print("Python".center(10)) # " Python "
print("Python".center(10, "*"))# "**Python**"
# 実用例 - テーブル出力
print("이름".ljust(10) + "나이".rjust(5))
print("홍길동".ljust(10) + "25".rjust(5))
print("김철수".ljust(10) + "30".rjust(5))