raw文字列の基本
基本的な使い方
# 通常の文字列でのエスケープシーケンス
normal_string = "Hello\nWorld\t!"
print(normal_string)
# Hello
# World !
# raw文字列でのエスケープシーケンス無効化
raw_string = r"Hello\nWorld\t!"
print(raw_string) # Hello\nWorld\t!
raw文字列の宣言方法
# r または R プレフィックスを使用
raw1 = r"文字列"
raw2 = R"文字列" # 大文字でも可
# トリプルクォートとの組み合わせ
raw_multiline = r"""複数行の
raw文字列も
可能です\n\t"""
print(raw_multiline)
実用的な活用例
ファイルパス(Windows)
# 通常の文字列(エラーになる可能性)
# path = "C:\new\text\file.txt" # \nや\tがエスケープされる
# raw文字列を使用(推奨)
path = r"C:\new\text\file.txt"
print(path) # C:\new\text\file.txt
# または、スラッシュを使用
path_alt = "C:/new/text/file.txt"
print(path_alt) # C:/new/text/file.txt
正規表現パターン
import re
# 通常の文字列では\\が必要
pattern1 = "\\d+\\.\\d+"
regex1 = re.compile(pattern1)
# raw文字列なら\1つで済む
pattern2 = r"\d+\.\d+"
regex2 = re.compile(pattern2)
test_string = "価格は123.45円です"
print(regex1.search(test_string).group()) # 123.45
print(regex2.search(test_string).group()) # 123.45
SQLクエリ
# 通常の文字列
sql1 = "SELECT * FROM users WHERE name = 'John\\tDoe'"
# raw文字列(読みやすい)
sql2 = r"SELECT * FROM users WHERE name = 'John\tDoe'"
print("通常:", sql1)
print("Raw:", sql2)
正規表現での活用
複雑な正規表現パターン
import re
text = "電話番号: 03-1234-5678, FAX: 03-9876-5432"
# raw文字列を使った電話番号パターン
phone_pattern = r"\d{2,4}-\d{4}-\d{4}"
phones = re.findall(phone_pattern, text)
print(phones) # ['03-1234-5678', '03-9876-5432']
# 日本の郵便番号パターン
postal_code = "〒123-4567"
postal_pattern = r"〒\d{3}-\d{4}"
match = re.search(postal_pattern, postal_code)
if match:
print(f"郵便番号: {match.group()}")
改行を含む正規表現
import re
multiline_text = """行1: データ
行2: 情報
行3: テスト"""
# 行番号と内容を抽出
pattern = r"行(\d+): (.+)"
matches = re.findall(pattern, multiline_text)
print(matches) # [('1