文字列とバイト列

Python 3.0以降において文字列はUnicodeをサポートするようになりました。str.encode()で文字列をバイト列に、bytes.decode()でバイト列を文字列に変換できます。引数のエンコーディングを省略するとデフォルトのエンコーディングが用いられます。
>>> s = "こんにちは世界"
>>> print(s)
こんにちは世界
>>> bs = s.encode() #引数を省略(UTF_8でエンコード)
>>> print(bs)
b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf\xe4\xb8\x96\xe7\x95\x8c'
>>> print(bs.decode())
こんにちは世界

>>> s = "こんにちは世界"
>>> bs = s.encode("cp932") #cp932でエンコード
>>> print(bs)
b'\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd\x90\xa2\x8aE'
>>> print(bs.decode("cp932"))
こんにちは世界

文字列を結合する

>>> s = "Hello"
>>> s + " World!"
'Hello World!'

繰り返し文字列を生成する

>>> s = "Hey "
>>> s * 3
'Hey Hey Hey '

大文字・小文字に揃える

upper()で大文字に、lower()で小文字に揃えます。
>>> s = "I love SPAM"
>>> s.upper()
'I LOVE SPAM'
>>> s.lower()
'i love spam'

大文字・小文字の入れ替え

swapcase()で大文字は小文字に、小文字は大文字に変換されます。
>>> s = "I love SPAM"
>>> s.swapcase()
'i LOVE spam'

複数行の文字列を作成する

>>> s = """
... SPAM
... Egg
... Bacon
... """
>>> print(s)

SPAM
Egg
Bacon

>>>

部分文字列を取り出す

文字列はシーケンス型なので、スライスを用いることにより部分文字列を取り出すことができます。
>>> s = "SPAM Egg Bacon"
>>> s[3]
'M'
>>> s[0:3]
'SPA'
>>> s[0:4]
'SPAM'
>>> s[2:4]
'AM'
>>> s[:4]
'SPAM'
>>> s[4:]
' Egg Bacon'
>>> s[-5:]
'Bacon'
>>> s[:-6]
'SPAM Egg'
>>> s[1:11:2]
'PMEgB'

文字列を一文字ずつ処理する

文字列もシーケンス型ですので、for文で一文字ずつ処理することができます。
>>> for x in "SPAM":
...     print(x)
... 
S
P
A
M

文字列の先頭と末尾の空白文字を削除する

>>> s = "     SPAM     "
>>> s.strip()
'SPAM'
>>> s.lstrip()
'SPAM     '
>>> s.rstrip()
'     SPAM'

文字列の長さを表示する

>>> s = "SPAM Egg Bacon"
>>> len(s)
14

文字列を整数に変換する

>>> i = 1
>>> s = "123"
>>> i + int(s)
124

文字列を浮動小数点数に変換する

>>> s = "123"
>>> float(s)
123.0

コード値をASCII文字に変換する

>>> chr(97)
'a'

文字列を中央寄せ・左詰・右詰する

>>> s = "SPAM"
>>> s.center(12)
'    SPAM    '
>>> s.ljust(12)
'SPAM        '
>>> s.rjust(12)
'        SPAM'

文字列中で指定したパターンにマッチする部分を置換する

replace()を用いることによってパターンにマッチする部分を置換します。いくつまで置換するかを指定することもできます。
>>> s = "abc abc abc abc"
>>> s.replace("ab","xy")
'xyc xyc xyc xyc'
>>> s.replace("ab","uv",2)
'uvc uvc abc abc'

文字列中に含まれている任意文字列の位置を求める

find()やindex()を用いることによって文字列中の位置を探すことができます。指定した部分文字列が含まれない場合、find()では-1を返しますが、index()ではValueErrorとなります。rindex()とrfind()は終端から文字列を探します。
>>> s = "SPAM Egg SPAM Bacon"
>>> s.find("SPAM")
0
>>> s.find("Egg")
5
>>> s.find("SPAM",4)
9
>>> s.find("Sausage")
-1
>>> s.index("Egg")
5
>>> s.rindex("SPAM")
9
>>> s.rfind("SPAM",0,9)
0

セパレータで文字列を区切る

split()はセパレータを指定して文字列を区切ります。引数を指定しないとスペースがセパレータになります。セパレータには文字列も指定できます。
>>> s1 = "SPAM Egg Bacon"
>>> s1.split()
['SPAM', 'Egg', 'Bacon']
>>> s2 = "1,2,3"
>>> s2.split(",")
['1', '2', '3']
>>> s3 = "4 :::: 5 :::: 6"
>>> s3.split(" :::: ")
['4', '5', '6']


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年11月22日 18:47