どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

pythonの出力文いろいろまとめてみる。

この記事ではpythonを使った文字列や数値の出力の色々な方法をまとめています。

 

関連リンク

2. 組み込み関数 — Python 3.6.5 ドキュメント

4. 組み込み型 — Python 3.6.5 ドキュメント

printの使い方

print関数はこんな感じになっています。

print(*objects, sep='', end='\n', file=sys.stdout, flush=False)

objectsをsepで区切りながらfile(デフォルトではsys.stdout)に表示し、最後にendの文字列を出力する。

私はゴリラです。

sample = "私はゴリラです。"
print(sample)
# 私はゴリラです。

改行しないで、私はゴリラです。

pythonのprint関数はデフォルトでは改行が付け加えられるので、endを以下のようにすると改行されないで出力されます。

print("私はゴリラです。", end="")

出力文の末尾に文字列を追加してウホウホする。

print(sample, end="ウホウホ")
# 私はゴリラです。ウホウホ

リストの中身をゴリラ区切りで出力

example = ["Hello World", "Yes", "Ok"]
print(*example, sep="ゴリラ")
# Hello WorldゴリラYesゴリラOk

リストの中身を改行区切りで出力

print(*example, sep="\n")
# Hello World
# Yes
# Ok

ファイルに書き込む

print()の引数のひとつにfileというものがあります。これはデフォルトでfile=sys.stdoutとなっています。このfileは出力先となっているので、print()を使ってデータをファイルに書き込むことができます。

import codecs
f = codecs.open("gorilla.txt", "w", "utf-8")
sample = "私はゴリラです。"
print(sample, file=f)

2行で書き込むことができる。

import codecs
print("私はゴリラです。", file=codecs.open("gorilla.txt", "w", "utf-8"))

%を使った出力

%を使えばフォーマットを指定して出力できます。

c言語のprintfに似ています。

整数を出力ー>%d

複数の変数を渡すには変数をタプルに入れる。

print("%d匹の子豚" % 3)
# 3匹の子豚

x = 3
print("%d x %d = %d" % (x, x, x*x))
# 3 x 3 = 9

ゼロパディング

print("ジェームズ・ボンド=%03d" % 7)
# ジェームズ・ボンド=007

桁数の指定

足りない分は空白で補う。

print("ジェームズ・ボンド=%3d" % 7)
# ジェームズ・ボンド=  7

指定した桁数より変数の桁が大きい場合は変数の桁が優先される。

print("ジェームズ・ボンド=%3d" % 7777)
# ジェームズ・ボンド=7777

小数を出力ー>%f

accuracy = 0.912234009234
print("%f" % accuracy)
# 0.912234

小数点以下2桁で出力する

print("Accuracy %.2f" % accuracy)
# Accuracy 0.91

文字列を出力ー>%s

num = 3
string = "子豚"
print("%d匹の%s" % (num, string))
# 3匹の子豚

formatを使う

formatを使ってフォーマットを出力する。{}に値を埋め込みます。

print("I am {}.".format("gorilla"))

複数の値を指定したところに入れる

x = "です"
y = "ウホウホ"
gorilla = "私はゴリラ{0}。{1}したい{0}。そう{0}ね。".format(x, y)
print(gorilla)
# 私はゴリラです。ウホウホしたいです。そうですね。

{}にインデックスを指定すると、formatの中身の順番通りに出力される。

{}にキーワードを指定して出力する。

print("私は{gorilla}です。".format(gorilla="ゴリラ"))
# 私はゴリラです。

ゼロパディング

print("ジェームズ・ボンド={:03d}".format(7))
# ジェームズ・ボンド=007

小数点以下の桁数を指定

print("Accuracy {:.2f}".format(0.3456789))
# Accuracy 0.35

左寄せ

print("左に寄せる -> {:<10s}したいな。".format("ウホウホ"))
# 左に寄せる -> ウホウホ      したいな。

中央寄せ

print("中央に寄せる-> {:^10s}したいな。".format("ウホウホ"))
# 中央に寄せる->    ウホウホ   したいな

埋める文字を指定してからの中央に寄せてウホウホする。

下の例では、*を埋める文字に指定している。(※埋める文字は1文字しか指定できないみたい。)

print("{:*^10}".format("ウホウホ"))
# ***ウホウホ***

右に寄せる

print("右に寄せる -> {:>10s}したいな。".format("ウホウホ"))
# 右に寄せる ->       ウホウホしたいな。

%を使う

print("Accuracy {:.2%}".format(0.3456789))
# Accuracy 34.57%

print("Accuracy {:.0%}".format(0.3456789))
# Accuracy 35%

{}を出力する

print("私は{{}}です。".format("ゴリラ"))
# 私は{}です。

書式を指定

print("{name}={code:03d}".format(name="ジェームズ・ボンド", code=7))
# ジェームズ・ボンド=007

f記法

python 3.6から追加された機能。

x = 3
print(f"{x}x{x}={x*x}")
# 3x3=9

試しにウホウホ

先頭にfをつける。

say = "ウホウホ"
gorilla = f"{say}したいです。"
print(gorilla)
# ウホウホしたいです。

めっちゃウホウホしたいです。

say = ["めっちゃ", "ウホ", "ウホ"]
gorilla = f"{''.join(say)}したいです。"
print(gorilla)
# めっちゃウホウホしたいです。

右寄せと左寄せ

left = "左"
print(f"{'右':>5s}のゴリラがいいなぁ")
#     右のゴリラがいいなぁ

print(f"いや、俺は{left:<5s}のゴリラがいいな。")
# いや、俺は左    のゴリラがいいな。