コンテンツにスキップ

Pythonの文字列rawを使用する方法

[

PythonのRaw Stringsとは何ですか?

更新日:2024年1月24日

PythonのRaw Stringsとは、通常の文字列リテラルに接頭辞として小文字の「r」または大文字の「R」が付いたものです。このチュートリアルでは、Pythonがいくつかの文字を解釈する際における重要な違いについて説明します。

Raw Stringsは通常の文字列リテラルとほぼ同じように見え、ほとんど同じように振る舞いますが、いくつかの文字の解釈方法において重要な違いがあります。

>>> r"This is a raw string"
'This is a raw string'

Raw Stringは通常のPythonのstrオブジェクトとして扱われます。

その他の接頭辞として利用可能なものは以下があります:

  • b: バイトリテラル
  • f: フォーマット済み文字列リテラル
  • u: レガシーなUnicode文字列リテラル(PEP 414)

最も馴染みのあるものとしては、f-stringがあります。f-stringは文字列リテラル内で式を評価することができます。Raw Stringsはf-stringほど人気はありませんが、コードの可読性を向上させるために使用することができます。

文字列の作成は、新しいプログラミング言語を学ぶ際に最初に習うスキルの一つです。PythonのBasicコースでは、このトピックについて最初に学びます。Pythonでは、テキストを単一引用符(')または二重引用符(")で囲むことで、文字列リテラルをソースコードに定義することができます。

>>> david = 'She said "I love you" to me.'
>>> alice = "Oh, that's wonderful to hear!"

この選択肢により、テキストに区切り文字('または")が含まれている場合に構文エラーを回避することができます。例えば、文字列の中でアポストロフィを表現する必要がある場合は、テキストを二重引用符で囲むことができます。または、複数行文字列を使用して、テキスト内で両方の区切り文字を組み合わせることもできます。

長いテキスト(例:Pythonの禅)を収容できるマルチライン文字列リテラルは、三重引用符('''または""")を使用して宣言することができます。

>>> poem = """
... Beautiful is better than ugly.
... Explicit is better than implicit.
... Simple is better than complex.
... Complex is better than complicated.
... """

選択したデリミタの種類に関係なく、文字列リテラルの接頭辞には常にプレフィックスを付けることができます。プレフィックスの前に空白を入れないように注意してください。

文字列リテラルにrを接頭辞として使用すると、対応する文字列リテラルをRaw Stringに変換することができます。では、PythonのRaw Stringsとは具体的にどのようなものでしょうか。

Raw Stringsの基本的な使い方

Raw Stringsは、エスケープ文字のシーケンス(例:\n\t)を無視します。つまり、Raw Stringsはエスケープ文字がそのまま文字列として解釈されます。これにより、ファイルパスや正規表現など、特定の文字列の表現に便利です。

ファイルパスの指定

Raw Stringsを使用すると、Windowsのファイルパスなど、エスケープ文字を多く使用する場面で便利です。通常の文字列リテラルでは、エスケープ文字を2つ記述する必要がありますが、Raw Stringsでは1つのエスケープ文字で済みます。

>>> path = r"C:\Users\me\Documents\file.txt"
>>> print(path)
C:\Users\me\Documents\file.txt

正規表現の作成

Raw Stringsは、正規表現の作成時にも役立ちます。正規表現パターンには多数のエスケープ文字が使用されるため、エスケープ文字がそのまま解釈されるRaw Stringsを使用すると、パターンの作成が簡単になります。

import re
pattern = r"\d{3}-\d{4}-\d{4}"
phone_number = "123-4567-8901"
if re.match(pattern, phone_number):
print("Valid phone number")
else:
print("Invalid phone number")

Raw Stringsの注意点

Raw Stringsを使用する際に注意すべきポイントもあります。

  • Raw Stringsはエスケープ文字を無視するため、\"\\などのエスケープ文字を文字列内で使用することはできません。ただし、r"\"のようにエスケープ文字の直後には別の文字やエスケープ文字を追加することは可能です。
  • Raw Stringsの最後の文字がバックスラッシュ(\)の場合、バックスラッシュを2つ追加する必要があります。これは、バックスラッシュがエスケープ文字として解釈されないようにするためです。

Raw Bytesとの比較

Raw Stringsに加えて、Raw Bytesというものもあります。Raw Bytesはbプレフィックスを使用して作成されるバイトリテラルです。Raw Bytesでは、文字列のバイト表現を直接指定することができます。

Raw Bytesは、ファイルのバイナリデータなど、バイトレベルでの操作や処理が必要な場合に便利です。文字列とは異なり、バイト列ではエスケープ文字は使用されません。

以下はRaw Bytesの例です。

>>> data = br"\x48\x45\x4c\x4c\x4f" # "HELLO"のバイト表現
>>> print(data)
b'\\x48\\x45\\x4c\\x4c\\x4f'
>>> print(data.decode())
\x48\x45\x4c\x4c\x4f
>>> print(data.decode().encode())
b'\\x48\\x45\\x4c\\x4c\\x4f'

バイトリテラルを作成する際には、rbという組み合わせも使用できます。

>>> raw_data = rb'\x48\x45\x4c\x4c\x4f'
>>> print(raw_data)
b'\\x48\\x45\\x4c\\x4c\\x4f'

バイトリテラルを扱う場合は、文字列としてエンコードまたはデコードする必要があります。

よく使われるエスケープ文字シーケンス

以下は、よく使われるエスケープ文字シーケンスの一部です。

シーケンス説明
\n改行
\tタブ
\rキャリッジリターン
\‘シングルクォート(’)
\“ダブルクォート(”)
\バックスラッシュ(\)
\aアラート(ベル)
\bバックスペース
\fフォームフィード
\v垂直タブ
\N{name}Unicode文字(nameには文字名)
\uXXXX16進数表記Unicode文字(XXXXは4桁)
\UXXXXXXXX16進数表記Unicode文字(XXXXXXXXは8桁)

これらのエスケープ文字シーケンスは、通常の文字列リテラルにおける振る舞いと同様にRaw Stringsでも使用することができます。

まとめ

PythonのRaw Stringsは、エスケープ文字のシーケンスを無視する特徴を持っています。Raw Stringsはファイルパスの指定や正規表現の作成など、特定の文字列の表現に便利です。

Raw Stringsはエスケープ文字を無視するため、ファイルパスの指定などで役立ちます。また、正規表現の作成にも便利です。

ただし、Raw Stringsを使用する際には注意が必要です。また、Raw Stringsとは異なるRaw Bytesという機能もあります。

以上が、PythonのRaw Stringsについての詳細な解説でした。

Pythonのチュートリアル → 深い記事とビデオコース 学習パス → 加速学習のためのガイド付きスタディプラン クイズ → 学習の進捗をチェック トピックをブラウズ → 特定の領域やスキルレベルに重点を置く コミュニティチャット → 他のPythonistaたちと一緒に学ぶ オフィスアワー → Pythonの専門家とのライブQ&Aコール ポッドキャスト → Pythonの世界の最新情報 書籍 → 知識を補完し、オフラインで学ぶ すべてのコンテンツをアンロック →

  • もっと見る

Learner Stories Python Newsletter Python Job Board Meet the Team Become a Tutorial Writer Become a Video Instructor

/

— 無料のメール連載 —

🐍 Python Tricks 💌

Python Tricks Dictionary Merge

Python Tricksを入手 »

🔒 スパムなし。いつでも購読解除できます。

トピックをブラウズ ガイド付き学習パス 基礎 中級 上級


api ベストプラクティス キャリア コミュニティ データベース データサイエンス データ構造 データ可視化 DevOps Django Docker エディタ Flask フロントエンド ゲーム開発 GUI 機械学習 NumPy プロジェクト Python テスト ツール ウェブ開発 ウェブスクレイピング

目次

  • PythonのRaw Stringsとは何ですか?
    • 簡単に言うと:Python Raw Stringsはエスケープ文字のシーケンスを無視します
    • Raw StringsがWindows上のファイルパスの指定にどのように役立つのか?
    • Raw Stringsは正規表現の作成にどのように役立つのか?
    • Raw Stringsを使用する際の注意点は?
    • Raw BytesはRaw Stringsよりも優れている場合は?
    • よく使われるエスケープ文字のシーケンスには何があるのか?
    • まとめ