06. Print関数

Pythonのprint 関数、formatの使い方を徹底解説!(引数、書式・桁数指定・ファイル出力など)

更新日:

printは文字列を画面に出力する関数で、非常に便利でpythonのプログラミングに欠かせない関数になります。

 
printは、様々な場面で利用され、画面にメッセージを表示するだけでなく、記述したプログラムが正常に動作するか確認する際に、printで変数などに格納された値を画面に出力し、正しく想定された値が格納されているかを確認するのにも利用します。

 
このページでは、printが実際にどのように使われるか、具体的な例も交えながら見ていきましょう。

 
 

Pythonにおけるprint関数の使い方

printは文字列を画面に出力する関数で、以下のように記述します。

print(出力するデータ, sep = "", end = "\n", file=ファイルオブジェクト, flush=False)

主な引数は、

引数必須/任意説明
出力するデータ必須printで出力するデータを文字列、数値、変数、リスト、タプル、辞書などで指定。
複数のデータを指定することもできます。
sep任意複数のデータを出力する場合の区切り文字を指定
※何も指定しなければ、空白になります。
end任意printでデータを出力した後(末尾)に出力するものを指定
※何も指定しなければ、改行コードが指定されます。
file任意出力対象のファイルオブジェクトを指定。
詳細は後の章で解説いたします。
flush任意バッファの処理を止め強制的に出力するか否かをTrue/Falseで指定。
※何も指定しなければ、Falseになります。

※それぞれの引数については、後の章で1つ1つ詳しく解説していきます。

 
 
まず初めに簡単な例を確認しましょう。文字列"Hello"や数値123を出力したい場合、次のように記述します。

Hello
123

 
 

print関数による変数に格納された値の出力

printでは、直接出力したい文字列を渡してその内容を表示するだけでなく、変数に格納した文字列や数値を出力することもできます。

 
文字列"Hello"を変数stringに格納し、数値123を変数numberに格納します。これら変数string、変数numberの値を出力したい場合、次のように記述します。

Hello
123

 
 
Jupyter Notebook(ジュピター・ノートブック)※1ではセルに変数を入力することで、変数に格納した値を確認することができますが、1つのセルに複数の変数を入力しても、最後の変数の値しか表示されません。そのような場合にprintを利用すると、全ての変数の値を確認することができます。

 
※1 Jupyter Notebookとは、ブラウザ上で動作するプログラムの対話型実行環境です。データ分析には欠かせないツールの1つです。Jupyter Notebookの詳しい説明は、「図解!Jupyter Notebook徹底解説!」を参照ください。

 
 
また+(プラス演算子)を利用して、複数の文字列を連結・結合して出力することもできます。

Hello,Good Bye

 
 
数値と文字列を合わせて表示したい場合は、数値を文字列に変換する必要があります。ここではstrで数値を文字列に変換しています。

electric oven: 21000

 
 

print関数によるリスト、タプル、辞書の出力(アスタリスクによる各要素の展開)

printでは、リスト、タプル、辞書も出力することもできます。それでは、それぞれの例を見ていきましょう。

 
まずはリストから始めます。リスト["a", "b", "c", "d", "e"]を変数mylistに格納しprintで出力します。

['a', 'b', 'c', 'd', 'e']

 
リストの3番目の要素だけをprintで出力します。リストの要素のカウントは0から始まりますので、3番目の要素はmylist[2]と指定します。

c

 
また*(アスタリスク)を付けることにより、リスト["a", "b", "c", "d", "e"]の各要素を展開し出力することもできます。

a b c d e

 
 
タプルもリストと同様にprintで出力できます。

(1, 2, 3, 4, 5)

 
またタプルも*(アスタリスク)を付けることにより、各要素を展開し出力することもできます。

1 2 3 4 5

 
 
今度は辞書を出力してみましょう。辞書{"A01":"TV", "A02":"printer", "A03":"scanner"}を変数mydictに格納しprintで出力します。

{'A01': 'TV', 'A02': 'printer', 'A03': 'scanner'}

 
辞書のキー"A02"の要素だけをprintで出力します。

printer

 
辞書に*(アスタリスク)を付けるとどうなるでしょうか。

A01 A02 A03

辞書のキーだけが展開されて表示されました。

 
辞書にキーだけでなく、値も含めて表示したい場合、次のように記述します。

A01 TV
A02 printer
A03 scanner

for文を使って辞書の各要素を順に取り出して出力します。辞書のキーと値は、item()により、分けて取得されます。
 
for文の詳しい説明は、「図解!Python for ループ文の徹底解説」を参照ください。

 
 

print関数による複数の変数の出力と引数sepの指定(カンマ区切りなど)

Printでは、複数の文字列や数値、変数を出力することができます。引数として、出力対象のものをカンマで区切って渡します。

print(出力対象のもの1, 出力対象のもの2, …, sep="区切り文字")

また任意の引数としてsepに対して区切り文字を渡すこともできます。指定しなければ、空白が区切り文字として使用されます。

 
 
文字列"Hello"を格納した変数string、数値123を格納した変数number、文字列"ABC"をprintに渡し、出力してみましょう。その際に引数sepに", "を渡し、カンマで区切って出力します。

Out: Hello, 123, ABC

 
 

print関数で改行あり/改行なしを制御して出力(引数endの指定や改行コードの挿入)

末尾での改行あり/改行なしを制御する方法

Printでは、任意の引数として、末尾に出力する文字を指定することもできます。

print(出力対象のもの, end="末尾に出力する文字")

何も指定しなければ、改行コード"\n" (バックスラッシュ+n)が末尾に出力されます。

 
 
文字列"Hello"と数値123を、それぞれprintで出力します。

Hello
123

引数endを指定しなければ、改行コード"\n"が末尾に出力され、2つ目のprintの結果は、自動的に改行されて出力されます。

 
 
次にprintの引数として、end = ","(カンマ)を渡してみます。

Hello,123

今度は改行されずにカンマが出力されました。

 
 

文中で改行する方法

また文中で改行したい場合、文中に改行コード"\n" (バックスラッシュ+n)を挿入することで、指定した箇所で改行することができます。

 
 
例えば、"Hello World!!"を"Hello"と"World!!"で改行して出力したい場合、間に"\n"を挿入することで改行して出力することができます。

Hello
World!!

 
 

print関数でファイル出力・保存する方法

Printでは、任意の引数として、fileを指定することもできます。

print(出力対象のもの, file=出力対象のファイルオブジェクト)

 
またファイルオブジェクトは次のようにして作成することができます。

with open(ファイルのパス, “w”) as ファイルオブジェクトの名前:

作成したファイルオブジェクトはクローズする必要がありますが、上記のようにwithブロックで記述すると、withブロックが終わると自動的にクローズされます。

 
またファイルのパスと合わせて、openには引数として”w”を渡すことで、書き込みモードでファイルが開かれます。もしテキスト無ければ新規作成されてから開かれます。

 
 
例えば、カレントディレクトリ(現在実行中のディレクトリ)にtest.txtという名前でファイルを作成し、printで”Hello World!!”と出力・保存する場合は、次のように記述します。

ここでは、ファイルオブジェクトに”f”という名前を付けて、printの引数fileに渡しています。

 
カレントディレクトリに作成されたtest.textを確認すると、次のテキストが出力されていることを確認することができます。

Hello World!!

 
 
同じファイルに複数のテキストを出力する場合、続けてprintを記述します。

 
ファイルへの出力結果は、次のようになります。

Hello World!!
This is a really good World!
I am so happy.

 
 

print関数でフラッシュ(flush)によりバッファを強制的に即時出力する方法

Printで出力する内容は、バッファに蓄積され出力されるまでに時間がかかることがあります。処理の中にいくつかのprintが記述されていても、全ての処理が終わってから、まとめて出力されることがあります。
 
これらのバッファの処理を止め、各printの処理時に強制的に出力するよう指定するのが、printの引数flushになります。

 
printでは、任意の引数flushにTrueを指定すると強制的に出力されます。

print(出力対象のもの, flush=False/True)

何も指定しなければ、 デフォルトではFalseになっています。

 
例えば、文字列“フラッシュのテストです。”を即時出力したい場合、引数flushにTrueを指定します。

フラッシュのテストです。

print関数でエスケープシーケンスを使い特殊文字(ダブルクォーテーションなど)を表示する方法

Pythonでは、改行やタブなど特殊な文字を表すのにエスケープシーケンスを使って記述します。

 
また文字列はシングルかダブルクォーテーションで囲って示されますので、これらのクォーテーションを利用したい場合もエスケープシーケンスを使って記述する必要があります。

 
次の表が主なエスケープシーケンスの例になります。

記号意味
\'シングルクォーテーション(')を表示
\"ダブルクォーテーション(")を表示
\n改行
\r同じ行の先頭に戻る
\t水平タブ
\\\を表示
\??を表示

 
これらのエスケープシーケンスは、print関数でも利用することができます。

 
例えば、文字列 He said “Hello World!” をprintを使って表示する場合、ダブルクォーテーションを表示するエスケープシーケンス\”を用いて記述します。

'He said "Hello World!"'

 

また文字列の途中で改行を入れたい場合、改行を表示するエスケープシーケンス\nを用いて記述します。

'Line1'
'Line2'
'Line3'

 
 
 

パーセントを用いた変換指定子(%d, %sなど)の使い方

ある文字列の中に変数に格納された数値や文字列を表示したい場合、「%d」や「%s」などの変換指定子を利用して記述することもできます。

 
変換指定子の種類はいくつかあり、その中でも特に良く使うのが、変数が文字列の時に使う「%s」、整数値の時に使う「%d」になります。

 
変換指定子の書式は以下の通りです。

print("文字列… %s 文字列…" % 変数) #変数が文字列の場合
print("文字列… %d文字列…" % 変数) #変数が整数の場合

printで出力したい文字列の中で、変数の値を表示したい箇所に%sや%dを挿入します。そして文字列の後に、%と挿入する変数を記載します。

 
変数が整数値の時に使う「%d」の使用例は次のようになります。

electric ovenの売上は、21000円です。

 
また変換指定子を用いて複数の変数を出力したい場合は、タプル型を利用します。タプル型については別の記事で詳しく説明しますが、( ) 括弧に要素を記述した配列のようなものと思って下さい。各要素間はカンマで区切られています。

 
タプルの詳しい説明は、「Pythonにおけるタプルの使い方」を参照ください。

 
ここでは文字列型の変数product_nameと整数型の変数sales_amountをタプルに格納して、それぞれ「%s」、「%d」で表示しています。

electric ovenの売上は、21000円です。

 
 

formatの使い方

formatを使って文字列の間に、任意の文字列や数値、変数を出力する方法も紹介します。formatの書式は以下の通りです。

print(“文字列…{0}文字列…”.format(出力対象のもの))

文字列の中の挿入したい箇所に{0}を入力します。すると、{0}の位置にformatの引数になっている出力対象の文字列や数値、変数の値が表示されます。

 

electric ovenの売上: 21000

 
 

formatで複数の文字列、数値、変数を出力

printで表示するものが複数ある場合は、{0}, {1}, {2}….と{}を増やしていきます。そして、formatの引数にformat(出力対象のもの1, 出力対象のもの2, 出力対象のもの3…..)と変数を追加します。

 
出力対象のもの1の値が{0}に、出力対象のもの2の値が{1}に、というように順に代入されます。

 
 
以下が複数の変数をformatで表示する例です。

electric ovenの売上: 21000, TVの売上: 48000

 
 
表示したいものが複数ある場合は、{0}, {1}, {2}….と{}を増やすこともできますが、出力対象のものの数が増えてくると、数値ではformat()に記述したものとの対応関係が分かりづらくなります。

 
その際には、出力するものに対して名前を付け、キーワード引数という形でformatに渡すこともできます。キーワード引数に名前を付けることで、対応関係を分かりやすくすることができます。

print(“文字列…{キーワード引数1}文字列…”.format(キーワード引数1=出力対象のもの1, ))

 
表示するものが複数ある場合は、{キーワード引数1}, {キーワード引数2}, {キーワード引数3}….と{}を増やしていきます。そして、formatの引数にformat(キーワード引数1=出力対象のもの1, キーワード引数2=出力対象のもの2, キーワード引数3=出力対象のもの3…..)とキーワード引数と出力する内容を追加していきます。

 
 
以下がキーワード引数を利用して複数の変数をformatで表示する例です。

electric ovenの売上: 21000, TVの売上: 48000

 
 

formatで小数点以下の桁数の指定方法

formatで小数点以下の桁数を指定する方法は、次のようになります。

print("{:. 桁数f}".format(数値))

{ } の箇所に{:. 桁数f}と書きます。桁数の所に、表示したい桁数を数値で指定してください。

 
 
例えば、小数点以下1位まで表示する場合、{:.1f}と記述します。

123.5

 
また小数点以下3位まで表示する場合、{:.3f}と記述します。

123.457

 
 

formatで数値をパーセント表示する方法

formatで数値をパーセント表示する方法は、次のようになります。

print("{:}".format(数値))

 
また小数点以下の表示桁数も合わせて指定したい場合は、次のように記述します。

print("{:. 桁数% }".format(数値))

桁数の所に、表示したい桁数を数値で指定してください。

 
 
例えば、小数点以下1位まで表示する場合、{:.1f}と記述します。

23%

 
また小数点以下2位まで表示する場合、{:.2f}と記述します。

23.46%

 
 

formatで数値を3桁毎にカンマで区切って表示する方法

桁数が多い数値を見やすくする為、formatで数値を3桁毎にカンマで区切ってする方法は、次のようになります。

"{:, }".format(数値)

 
数値123456789を3桁毎にカンマで区切って表示してみましょう。

123,456,789

 
 

formatで数値の符号(プラス・マイナス)を表示する方法

数値において符号のマイナスは基本的には表示されますが、プラスは表示されません。プラスも表示したい場合、次のように記述します。

"{:}".format(数値)

 
数値1.23を表示します。

1.230000

プラスの符号が付いていません。

 
今度は、プラスの符号を付けて表示してみましょう。

+1.230000

 
 

formatで左揃え、中央揃え、右揃えの指定方法

formatで左揃え、中央揃え、右揃えは、次のように指定します。

 
左揃え:

"{:桁数 }".format(出力対象のもの)

 
右揃え:

"{:桁数 }".format(出力対象のもの)

 
中央揃え:

"{:桁数 }".format(出力対象のもの)

それぞれ{ }内の赤太字の箇所が変わります。

 
また桁数は表示する桁数になり、それ以外はスペースで埋められます。例えば、桁数に10を指定し、右揃えで4つの文字ABCDを表示すると左側に空白が6つ付いて'      ABCD'と表示されます。

 
文字列"ABCD"を中央揃えで表示する場合は、次のように記述します。

'   ABCD   '

 
同様に左揃えで表示します。

'ABCD      '

 
今度は右揃えで表示してみましょう。

'      ABCD'

 
 

formatで0(ゼロ)埋めなどの指定方法

formatでゼロ埋めなど、特定の文字や数値で埋めて出力したい場合、次のように指定します。

 
左揃え:

"{:埋める文字・数値<桁数 }".format(出力対象のもの)

 
右揃え:

"{:埋める文字・数値>桁数 }".format(出力対象のもの)

 
中央揃え:

"{:埋める文字・数値^桁数 }".format(出力対象のもの)

{ } 内のアライメントの前に埋める文字や数値を記入します。

 
数値123を右揃え10桁で表示し、空いた桁数はゼロ埋めで表示してみましょう。

0000000123

 
 

formatで数値を2進数、8進数、16進数で表示する方法

数値を2進数、8進数、16進数などで表示する方法は、次のようになります。

"{:進数 }".format(数値)

表示したい進数に合わせて、進数の箇所に次の文字を設定してください。b(2進数)、o(8進数)、d(10進数)、x(16進数)

 
数値200を2進数、8進数、10進数、16進数で表示します。

1111111 177 127 7f

 
 

formatで表示形式を指定して現在日時(日付、時刻)を表示する方法

Formatで日付の表示形式(yyyy/mm/ddなど)を指定して現在日時を表示する方法を確認していきましょう。

 
まずは日付の表示に必要なdatetimeをインポートします。

import datetime

 
次に現在日時をdatetime.datetime.now()を使って取得します。ここでは取得した値を変数nowに格納しています。

now = datetime.datetime.now()

 
そして、日付の表示形式を指定し、現在日時を表示します。

print("{:日付表示形式}".format(now))

 
日付の表示形式は、%Y%m%dなど、次の記号で指定します。
%b:月名の短縮形(Mar、Aprなど)
%d:0埋めした10進数の日にち(01、02など)
%Y:西暦4桁の10進表記(2019、2020など)

 
主な記号の一覧です。

記号説明
%d0埋めした10進数の日にち 01、02など
%m0埋めした10進数の月 01、02など
%y西暦2桁の10進表記 19、20など
%Y西暦4桁の10進表記 2019、2020など
%H24時間表記の時
%I12時間表記の時
%M2桁の分
%S2桁の秒
%f6桁のマイクロ秒

 
それでは例として、本日の日付をyyyy/mm/ddの形式で出力してみます。

2020/01/19

結果として2020/01/19と、指定したyyyy/mm/ddの形式で表示されました。

 

 
 






まとめ記事

1

Python3におけるWEBスクレイピングのやり方について初心者向けに解説した記事です。   Requests、Beautiful Soup、Selenium、Pandas、newspape ...

2

Pythonの基本的なトピックについて、チュートリアル形式で初心者向けに解説した記事です。プログラミング未経験者や初心者でもわかりやすいよう、丁寧に解説しています。   Pythonでデータ ...

3

Pandas(パンダス)とは、データを効率的に扱うために開発されたPythonのライブラリの1つで、データの取り込みや加工・集計、分析処理に利用します。   Pandasには2つの主要なデー ...

4

データ分析、機械学習、ディープラーニングにはグラフの描画による可視化は不可欠です。データは、加工前の状態ではただの数字の羅列でしかなく、一目で必要な情報が伝わるものではありません。それを集計しグラフに ...

5

NumPy(ナンパイ)は、数値計算を効率的に行うための拡張ライブラリです。ベクトルや行列などを効率的に数値計算するための数学関数ライブラリを提供します。NumPyを使うことにより、数値計算をより早く、 ...

-06. Print関数

Copyright© AI-interのPython3入門 , 2020 All Rights Reserved.