Python入門 - 数値・文字列・型

トップ > Python入門 > 数値・文字列・型

整数(int)

整数(int)は下記の様に記述します。

num = 1234        # 正の整数

0o(0O), 0x(0X), 0b(0B) はそれぞれ、8進数、16進数、2進数を意味します。

num = 0o777        #  8進数 (0oで始まる数値は 8進数とみなされる)
num = 0xffff       # 16進数 (0xで始まる数値は16進数とみなされる)
num = 0b11000100   #  2進数 (0bで始まる数値は 2進数とみなされる)

長整数(long)

長整数(long)は、整数(int)を超える桁数の整数を扱います。末尾に lL をつけますが、l は 1 と間違えやすいので L を使うのがよいでしょう。整数(int)の最大値(sys.maxint)はシステムにより異なり、231-1 だったり 263-1 だったりします。

num = 9223372036854775808L

長整数は、メモリが許す限り桁数に制限はなく、長整数同士の演算では計算誤差も生じません。

num = 1234567890123456789012345678901234567890123456789012345678901234567890L

Python 3 では、整数(int) と長整数(long)は統合され、すべて整数(int)として扱われるようになり、Ll も廃止されました。

num = 123L       # Python 3 ではエラー(SyntaxError例外)

浮動小数点数(float)

浮動少数点数(float)は下記の様に記述します。e2 は 10の2乗を意味します。

num = 1.234     # 浮動小数点数
num = 1.2e3     # 浮動小数点数(指数表記) 1.2 × 103
num = 1.2E-3    # 浮動小数点数(指数表記) 1.2 × 10-3

虚数(complex)

虚数(complex)には j または J をつけます。

num = 3.14j

論理値(bool)

論理値(bool)は、True または False で表します。最初の1文字は大文字で記述します。

bool = True
bool = False

Python では、False、数値の 0 や 0.0、空文字("")、空リスト([])、空タプル(())、空辞書({})などを偽とみなし、それ以外を真とみなします。

文字列(str)

文字列(str)は、ダブルクォート(")、またはシングルクォート(')で囲みます。

str = "Hello world"
str = 'Hello world'

"..." の中では ' を、'...' の中では " を使うことができます。"..." の中で " を、'...' の中で ' を使用するには、バックスラッシュ(\)を用いて引用符をエスケープ(無効化)します。

str = "We can use \" in the string."
str = 'We can use \' in the string.'

バックスラッシュ(\)を用いることで、複数行に分けることができます。

str = 'Hello \
world!'

"..." や '...' の前に r または R をつけると、後述するエスケープシーケンスが無視されます。

str = 'aaa\nbbb'        # \n は改行とみなされる
str = r'aaa\nbbb'       # \n はバックスラッシュ(\)と小文字nとみなされる

三重クォート """..."""'''...''' は、複数行にまたがった文字列を記述することができます。三重クォートはしばしば、複数行のコメントとして利用されることがあります。

str = """A simple example module
This module is ...
"""

複数の文字列をスペースで区切ることで、連結することができます。

print 'Hello ' 'world!'

Unicode文字列(unicode)

Unicode文字列(unicode)は、ASCII以外のUnicodeを含む文字列です。Python 2 では、"..." や '...' の前に u または U をつけます。Unicode文字列(unicode)として扱うことで、文字数を数える際など、Unicodeが認識されるようになります。

# Python 2
len = len(u'あいうえお')       # 5文字
len = len('あいうえお')        # バイト列として扱われるため、15文字になる

# Python 3
len = len(u'あいうえお')       # 5文字
len = len('あいうえお')        # uをつけなくても5文字として扱われる

エスケープシーケンスを無効化するには、urUR を指定します。

print ur'あああ\n'

Python 3.0 では u が廃止され、"..." や '...' が Unicode文字列を示すようになりました。Python 3.3 では u"..." が復活しました。

"..."
'...'
u"..."
u'...'
b"..."
b'...'
Python 2.x バイト列 Unicode文字列 バイト列
Python 3.0-3.2 Unicode文字列 SyntaxError バイト列
Python 3.3- Unicode文字列 Unicode文字列 バイト列

バイト列(bytes)

Python 3 では、"..." や '...' Unicode文字列(unicode)と同義となったため、逆に、あえてバイト列として扱いたい文字列の "..." や '...' の前に b または B を記述して、バイト列(bytes)であることを示します。Python 2 では b や B は無視されます。

bytes = b'0123456789abcdef'

エスケープシーケンス(\x)

文字列の中では、下記のエスケープシーケンスを使用できます。

\改行 : バックスラッシュと改行が無視される
\\ : バックスラッシュ(\)
\' : シングルクォート(')
\" : ダブルクォート(")
\a : ベル(BEL)
\b : バックスペース(BS)
\f : フォームフィード(FF)
\n : 改行(LF)
\r : 復帰(CR)
\t : タブ(TAB)
\v : 垂直タブ(VT)
\nnn : 8進表記文字(nは0~7)
\xnn : 16進表記文字(nは0~f)
\uxxxx : ユニコード文字xxxx (例: u"\u3042")
\U....xxxx : ユニコード文字xxxxxxxx (例: U"\U00003042")
\N{name} : Unicodeデータベース文字 (例: u"\N{HIRAGANA LETTER A}")

文字列のフォーマット(%)

% 演算子を用いて、C言語の printf()文に似た記法で、下記の様に文字列を フォーマット することができます。

errmsg = "Can't open file"
errcode = 19042
msg = "ERROR: %s (%d)" % (errmsg, errcode)
print msg                                    #=> ERROR: Can't open file (19042)

%s は文字列、%d は整数、%f は浮動小数点数、%x は16進数、%o は8進数、%% は %自身を示します。

print "%s" % "ABC"          #=> ABC
print "%d" % 123            #=> 123
print "%f" % 1.23           #=> 1.23
print "%x" % 255            #=> ff
print "%o" % 255            #=> 377
print "%%%d" % 80           #=> %80

% に続く数値で文字幅や桁数を指定することができます。

print "|%5s|" % 'ABC'        #=> |  ABC| : 右寄せ5文字分
print "|%-5s|" % 'ABC'       #=> |ABC  | : 左寄せ5文字分
print "|%5d|" % 123          #=> |  123| : 右寄せ5桁
print "|%-5d|" % 123         #=> |123  | : 左寄せ5桁
print "|%+5d|" % 123         #=> | +123| : ±符号付き
print "|%5.2f|" % 1.23       #=> | 1.23| : 全体桁数.少数点以下の桁数
print "|%05d|" % 123         #=> |00123| : 0埋め

Copyright(C) 2014 杜甫々
初版:2014年12月30日、最終更新:2014年12月30日
http://www.tohoho-web.com/python/types.html