Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでバックスラッシュ(円記号)が2回表示されるのはなぜ?エスケープ文字の仕組みを解説

Pythonでバックスラッシュ(円記号)が2回表示されるのはなぜ?

Pythonで文字列を出力したとき、バックスラッシュ(日本語環境では「¥」と表示されることもあります)が2つ連なって見えた経験はありませんか?これは、バックスラッシュが「エスケープ文字」として動作しているためです。本記事では、その仕組みと正しい対処法を初心者向けにわかりやすく解説します。

バックスラッシュは「エスケープ文字」

バックスラッシュ(\)は、文字列の中で特別な意味を持つ文字を、普通の文字として扱うためのエスケープ文字です。シングルクォートやダブルクォート、改行などを文字列に含めたいときに使用されます。

代表的なエスケープシーケンスは次のとおりです。

  • \n … 改行
  • \t … タブ
  • \' … シングルクォート(')
  • \" … ダブルクォート(")
  • \\ … バックスラッシュ(\)そのもの

バックスラッシュを1つ表示するには「\\」と書く

文字列の中にバックスラッシュそのものを含めたい場合は、バックスラッシュを使ってバックスラッシュ自身をエスケープします。つまり、画面に「\」を1つ表示したいなら、ソースコード上では「\\」と2つ続けて記述します。これは「このバックスラッシュはエスケープ文字ではなく、単なる1文字として扱え」とインタプリタに伝えていることになります。

print("hello \\ John's friends")

出力:

hello \ John's friends

リストやタプルで表示すると「\\」に見える理由

文字列を直接 print() すればバックスラッシュは1つだけ表示されますが、リストやタプルに格納して出力すると、エスケープ済みの「\\」という形で表示されることがあります。これはPythonが repr() による公式の文字列表現を使い、そのままコードとして貼り付けても同じ値を再現できる形式で出力するためです。

s = "C:\\Users\\name"
print(s) # C:\Users\name
print([s]) # ['C:\\Users\\name']

日本語環境では「¥」として表示されることも

Windowsの日本語環境では、半角バックスラッシュ(U+005C)がフォントやエンコーディングの影響で「¥」(円記号)として表示されることがあります。見た目が異なるだけで、内部では同じ文字コードが使われているため、動作に違いはありません。

まとめ

  • バックスラッシュはエスケープ文字であり、クォートや改行などを文字列に含めるために使われる
  • バックスラッシュそのものを表示したい場合は「\\」と2つ続けて書く
  • リストやタプルの表示では、再現可能な形式(repr)としてエスケープ済みの「\\」で出力される
  1. Pythonを学ぶべき10の理由|初心者からプロまで選ばれる万能言語の魅力

    Pythonは無料で学びやすい言語Pythonは、ダウンロードから利用、コーディングまで完全に無料で使えるプログラミング言語です。コマンドの多くがシンプルな英語で構成されているため、覚えやすく書きやすいのが特徴です。コードの可読性が高く、基礎知識が少しあれば、コードを読むだけでも多くのことを学べます。標準ライブラリが豊富に用意されており、複雑なアプリケーションも簡単に実装できます。Pythonは初心者を意識して設計された言語であり、インデント(空白)と一般的な表現を採用することで、煩わしい変数宣言や読みにくい波括弧の必要性を排除しました。プログラミングの第一歩として最適Pythonは、プログラ

  2. なぜPythonは他の言語より遅いのか?実行速度の違いを徹底解説

    Pythonはスクリプト言語であり、Cはコンパイル型のプログラミング言語です。C/C++がPythonと比べて高速なのは、この実行方式の違いによるものです。Pythonスクリプトを実行する場合、インタプリタがコードを1行ずつ解釈しながら出力を生成します。一方、Cでは事前にコンパイラがソースコードをコンパイルし、ハードウェアに最適化された実行ファイルを生成します。また、Javaや.NETなどの言語では、JIT(Just-In-Time)コンパイラが実行時にバイトコードをネイティブコードへ変換するため、Javaバイトコードや.NETバイトコードはPythonよりも高速に動作します。CPythonに