Python3でテキストをフォーマットする方法
###序章
文字列は多くの場合、書かれたテキストで構成されているため、句読点、改行、インデントによって文字列が人間にとって読みやすくなるように、文字列の外観をより細かく制御したい場合が多くあります。
このチュートリアルでは、Python文字列を操作して、すべての出力テキストが正しくフォーマットされていることを確認する方法をいくつか説明します。
##前提条件
Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)
##文字列リテラル
まず、文字列リテラルと文字列値を区別しましょう。 文字列リテラルは、引用符を含め、コンピュータプログラムのソースコードに表示されるものです。 文字列値は、print()
関数を呼び出してプログラムを実行したときに表示される値です。
「Hello、World!」でプログラムでは、文字列リテラルは"Hello, World!"
ですが、文字列値は引用符なしでHello, World!
です。 文字列値は、Pythonプログラムを実行したときにターミナルウィンドウに出力として表示される値です。
ただし、ソースを引用する場合のように、一部の文字列値には引用符を含める必要がある場合があります。 文字列リテラルと文字列値は同等ではないため、文字列値が意図したとおりに表示されるように、文字列リテラルにフォーマットを追加する必要がある場合がよくあります。
##引用符とアポストロフィ
Python内では一重引用符または二重引用符を使用できるため、一重引用符で囲まれた文字列内に二重引用符を使用して、文字列内に引用符を埋め込むこともできます。
情報:このチュートリアルのサンプルコードに従うには、python3
コマンドを実行して、ローカルシステムでPythonインタラクティブシェルを開きます。 次に、>>>
プロンプトの後に例を追加して、例をコピー、貼り付け、または編集できます。
'Sammy says, "Hello!"'
または、二重引用符で囲まれた文字列で所有格のアポストロフィを使用するには、次のようにします。
"Sammy's balloon is red."
一重引用符と二重引用符を組み合わせる方法で、文字列内の引用符とアポストロフィの表示を制御できます。
##複数行
複数行に文字列を印刷すると、テキストが人間にとって読みやすくなります。 複数の行を使用すると、文字列をクリーンで整然としたテキストにグループ化したり、文字としてフォーマットしたり、詩や歌詞の改行を維持するために使用したりできます。
複数行にまたがる文字列を作成するには、三重一重引用符'''
または三重二重引用符"""
を使用して文字列を囲みます。
'''
This string is on
multiple lines
within three single
quotes on either side.
'''
"""
This string is on
multiple lines
within three double
quotes on either side.
"""
三重引用符を使用すると、複数行に文字列を印刷して、テキスト、特に長いテキストを読みやすくすることができます。
##エスケープ文字
文字列をフォーマットする別の方法は、エスケープ文字を使用することです。 エスケープ文字はすべて、バックスラッシュキー(\
)を文字列内の別の文字と組み合わせて開始し、指定された文字列を特定の方法でフォーマットします。
一般的なエスケープ文字のいくつかのリストを次に示します。
エスケープ文字 | フォーマット方法 |
---|---|
\\ | 複数行の文字列の改行 |
\\\\ | バックスラッシュ |
’ | アポストロフィまたは一重引用符 |
“ | 二重引用符 |
\ n | 改行 |
\ t | タブ(水平インデント) |
エスケープ文字を使用して、上記の引用符の例に引用符を追加しましょう。ただし、今回は二重引用符を使用します。
print("Sammy says, \"Hello!\"")
OutputSammy says, "Hello!"
エスケープ文字\"
を使用することにより、二重引用符を使用して、二重引用符で囲まれたテキストを含む文字列を囲むことができます。
同様に、エスケープ文字\'
を使用して、一重引用符で囲まれた文字列にアポストロフィを追加できます。
print('Sammy\'s balloon is red.')
OutputSammy's balloon is red.
現在、エスケープ文字を使用しているため、一重引用符を使用する文字列内にアポストロフィを含めることができます。
上記のように三重引用符を使用すると、文字列を印刷するときに上下にスペースがあることがわかります。 プログラム内のテキストを非常に読みやすくしながら、文字列の先頭と文字列の最後で\
エスケープキーを使用して、これらのスペースを削除できます。
"""\
This multi-line string
has no space at the
top or the bottom
when it prints.\
"""
同様に、\n
エスケープ文字を使用して、enter
またはreturn
キーを押さなくても行を区切ることができます。
print("This string\nspans multiple\nlines.")
OutputThis string
spans multiple
lines.
エスケープ文字を組み合わせることもできます。 複数行の文字列を印刷し、項目別リストのタブ間隔を含めましょう。次に例を示します。
print("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1. Shark
2. Shrimp
10. Squid
\t
エスケープ文字で提供される水平方向のインデントにより、上記の例の2番目の列内での位置合わせが保証され、出力が人間にとって非常に読みやすくなります。
\n
エスケープ文字は短い文字列リテラルには適切に機能しますが、ソースコードが人間にも読めるようにすることが重要です。 長い文字列の場合、複数行の文字列に対する三重引用符のアプローチが望ましいことがよくあります。
エスケープ文字は、文字列に追加の書式を追加するために使用されますが、これは実現が困難または不可能な場合があります。 エスケープ文字がない場合、文字列Sammy says, "The balloon's color is red."
をどのように作成しますか?
##生の文字列
文字列内に特別なフォーマットが必要ない場合はどうなりますか? たとえば、バックスラッシュを意図的に使用するコンピューターコードの文字列を比較または評価する必要がある場合があるため、Pythonでバックスラッシュをエスケープ文字として使用することは望ましくありません。
raw string は、エスケープ文字を含む文字列内のすべてのフォーマットを無視するようにPythonに指示します。
文字列の前、開始引用符の直前にr
を配置して、生の文字列を作成します。
print(r"Sammy says,\"The balloon\'s color is red.\"")
OutputSammy says,\"The balloon\'s color is red.\"
特定の文字列の前にr
を使用して生の文字列を作成することにより、エスケープ文字として使用されるバックスラッシュやその他の文字を保持できます。
##結論
このチュートリアルでは、文字列を操作してPython3でテキストをフォーマットするいくつかの方法について説明しました。 エスケープ文字や生の文字列などの手法を使用することで、プログラムの文字列が画面上で正しくレンダリングされ、エンドユーザーがすべての出力テキストを簡単に読み取れるようにすることができます。
次のチュートリアルを見て、文字列についてさらに学び続けてください。