Python 3 - 文字列の連結と書式化操作

目次

文字列の連結

文字列は + 演算子で連結することができます。

Example

source code

str1 = "Hello"
str2 = "world"
str3 = str1 + " " + str2
print(str3)

result

Hello world

文字列と文字列以外のオブジェクトを連結

まず、文字列以外のオブジェクトを str コンストラクタで文字列に変換します。
その後、変換した文字列と他の文字列を + 演算子で連結することができます。

Example

source code

str1 = "Hello"
int1 = 123
float1 = -45.6
bool1 = True
none1 = None
str2 = (str1
        + " " + str(int1)
        + " " + str(float1)
        + " " + str(bool1)
        + " " + str(none1))
print(str2)

result

Hello 123 -45.6 True None

書式化操作を行う (文字列)

str オブジェクト (書式指定文字列) の format メソッドを使います。
このとき、波括弧内の文字列の一番右には 's' を指定します ('s' は省略可)。

Example

source code

str1 = "ABC"
str2 = "XYZ"
fmt = "s1 = {:s}, s2 = {:s}"
str3 = fmt.format(str1, str2)
print(str3)

result

s1 = ABC, s2 = XYZ

書式化操作を行う (整数を10進数で表現)

str オブジェクト (書式指定文字列) の format メソッドを使います。
このとき、波括弧内の文字列の一番右には 'd' を指定します ('d' は省略可)。

Example

source code

# オプション無し
print(u"* オプション無し")
print("n1 = '{:d}', n2 = '{:d}', n3 = '{:d}'\n".format(12, 0, -12))

# '+' オプションを指定すると、正の数 (及び 0) でも + 符号が表示される
print(u"* '+' オプションを指定すると、正の数 (及び 0) でも + 符号が表示される")
print("n1 = '{:+d}', n2 = '{:+d}', n3 = '{:+d}'\n".format(12, 0, -12))

# 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる
print(u"* 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる")
print("n1 = '{:08d}', n2 = '{:08d}'".format(12, -12))
print("n1 = '{:8d}', n2 = '{:8d}'".format(12, -12))
print("n1 = '{:+8d}', n2 = '{:+8d}'\n".format(12, -12))

# '=' オプションを指定すると、符号の後ろに文字が埋められる
print(u"* '=' オプションを指定すると、符号の後ろに文字が埋められる")
print("n1 = '{:=+8d}', n2 = '{:=+8d}'\n".format(12, -12))

# ',' オプションを指定すると、三桁ごとにカンマが表示される
print(u"* ',' オプションを指定すると、三桁ごとにカンマが表示される")
print("n1 = '{:,d}', n2 = '{:,d}'".format(1234567, -1234567))
print("n1 = '{:+,d}', n2 = '{:+,d}'".format(1234567, -1234567))
print("n1 = '{:+012,d}', n2 = '{:+012,d}'".format(1234567, -1234567))
print("n1 = '{:=+12,d}', n2 = '{:=+12,d}'\n".format(1234567, -1234567))

result

* オプション無し
n1 = '12', n2 = '0', n3 = '-12'

* '+' オプションを指定すると、正の数 (及び 0) でも + 符号が表示される
n1 = '+12', n2 = '+0', n3 = '-12'

* 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる
n1 = '00000012', n2 = '-0000012'
n1 = '      12', n2 = '     -12'
n1 = '     +12', n2 = '     -12'

* '=' オプションを指定すると、符号の後ろに文字が埋められる
n1 = '+     12', n2 = '-     12'

* ',' オプションを指定すると、三桁ごとにカンマが表示される
n1 = '1,234,567', n2 = '-1,234,567'
n1 = '+1,234,567', n2 = '-1,234,567'
n1 = '+001,234,567', n2 = '-001,234,567'
n1 = '+  1,234,567', n2 = '-  1,234,567'

書式化操作を行う (整数を16進数で表現)

str オブジェクト (書式指定文字列) の format メソッドを使います。
このとき、波括弧内の文字列の一番右に 'x' または 'X' を指定します。

小文字の 'x' の場合は、アルファベットの部分が小文字で表示されます。 また、大文字の 'X' の場合は、アルファベットの部分が大文字で表示されます。

Example

source code

# オプション無し
print(u"* オプション無し")
print("n = '{:x}'".format(1234))
print("n = '{:X}'\n".format(1234))

# 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる
print(u"* 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる")
print("n = '{:08x}'".format(1234))
print("n = '{:8X}'\n".format(1234))

# '#' オプションを指定すると、先頭に '0x' または '0X' が追加される
print(u"* '#' オプションを指定すると、先頭に '0x' または '0X' が追加される")
print("n = '{:#010x}'".format(1234))
print("n = '{:#010X}'\n".format(1234))

result

* オプション無し
n = '4d2'
n = '4D2'

* 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる
n = '000004d2'
n = '     4D2'

* '#' オプションを指定すると、先頭に '0x' または '0X' が追加される
n = '0x000004d2'
n = '0X000004D2'

書式化操作を行う (浮動小数点数)

str オブジェクト (書式指定文字列) の format メソッドを使います。
このとき、波括弧内の文字列の一番右に 'f' または 'F' を指定します。

小文字の 'f' の場合は、nan, inf が小文字で表示されます (nan, inf)。 また、大文字の 'F' の場合は、nan, inf が大文字で表示されます (NAN, INF)。

Example

source code

import math

# オプション無し
print(u"* オプション無し")
print("n1 = '{:f}', n2 = '{:f}', n3 = '{:f}'\n".format(12.34, 0, -12.34))
print("n1 = '{:f}', n2 = '{:f}'".format(math.nan, math.inf))
print("n1 = '{:F}', n2 = '{:F}'\n".format(math.nan, math.inf))

# '+' オプションを指定すると、正の数 (及び 0.0) でも + 符号が表示される
print(u"* '+' オプションを指定すると、正の数 (及び 0.0) でも + 符号が表示される")
print("n1 = '{:+f}', n2 = '{:+f}', n3 = '{:+f}'\n".format(12.34, 0, -12.34))

# 「小数点 '.' と桁数」を指定すると、小数点以下の桁数を変更することができる
print(u"* 「小数点 '.' と桁数」を指定すると、小数点以下の桁数を変更することができる")
print("n1 = '{:.4f}', n2 = '{:.4f}'".format(12.34, -12.34))
print("n1 = '{:.1f}', n2 = '{:.1f}'".format(12.35, -12.35))
print("n1 = '{:.1f}', n2 = '{:.1f}'\n".format(12.36, -12.36))

# 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる
print(u"* 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる")
print("n1 = '{:012f}', n2 = '{:012f}'".format(12.34, -12.34))
print("n1 = '{:12f}', n2 = '{:12f}'".format(12.34, -12.34))
print("n1 = '{:+12.4f}', n2 = '{:+12.4f}'\n".format(12.34, -12.34))

# '=' オプションを指定すると、符号の後ろに文字が埋められる
print(u"* '=' オプションを指定すると、符号の後ろに文字が埋められる")
print("n1 = '{:=+12.4f}', n2 = '{:=+12.4f}'\n".format(12.34, -12.34))

# ',' オプションを指定すると、三桁ごとにカンマが表示される
print(u"* ',' オプションを指定すると、三桁ごとにカンマが表示される")
print("n1 = '{:,f}', n2 = '{:,f}'".format(1234567.89, -1234567.89))
print("n1 = '{:+,f}', n2 = '{:+,f}'".format(1234567.89, -1234567.89))
print("n1 = '{:+016,f}', n2 = '{:+016,f}'".format(1234.56, -1234.56))
print("n1 = '{:=+16,.4f}', n2 = '{:=+16,.4f}'\n".format(1234.56, -1234.56))

result

* オプション無し
n1 = '12.340000', n2 = '0.000000', n3 = '-12.340000'

n1 = 'nan', n2 = 'inf'
n1 = 'NAN', n2 = 'INF'

* '+' オプションを指定すると、正の数 (及び 0.0) でも + 符号が表示される
n1 = '+12.340000', n2 = '+0.000000', n3 = '-12.340000'

* 「小数点 '.' と桁数」を指定すると、小数点以下の桁数を変更することができる
n1 = '12.3400', n2 = '-12.3400'
n1 = '12.3', n2 = '-12.3'
n1 = '12.4', n2 = '-12.4'

* 文字列の長さを指定すると、「ゼロ埋め」や「スペースで埋める」ことができる
n1 = '00012.340000', n2 = '-0012.340000'
n1 = '   12.340000', n2 = '  -12.340000'
n1 = '    +12.3400', n2 = '    -12.3400'

* '=' オプションを指定すると、符号の後ろに文字が埋められる
n1 = '+    12.3400', n2 = '-    12.3400'

* ',' オプションを指定すると、三桁ごとにカンマが表示される
n1 = '1,234,567.890000', n2 = '-1,234,567.890000'
n1 = '+1,234,567.890000', n2 = '-1,234,567.890000'
n1 = '+0,001,234.560000', n2 = '-0,001,234.560000'
n1 = '+     1,234.5600', n2 = '-     1,234.5600'

その他の書式化操作

このページで解説した書式化操作以外にも、「左詰め」、「2進数表現」、「8進数表現」などいろいろなものがあります。

詳しくは、Python ドキュメントの「書式指定ミニ言語仕様」を参照ください。

参考リンク