Python入門(文字列)

文字列
文字列はシングルクォートまたはダブルクォートで囲って作る
>>> 'abc'
'abc'
>>> type('abc')
<class 'str'>
>>> "abc"
'abc'
>>> type("abc")
<class 'str'>

シングルクォート3個で囲うこともできる
こうすると複数行の文字列を作ることができる
\nは改行を表す
>>> '''aaa
... bbb
... ccc'''
'aaa\nbbb\nccc'
>>> s = '''aaa
... bbb
... ccc'''
>>> type(s)
<class 'str'>
>>> s
'aaa\nbbb\nccc'
>>> print(s)
aaa
bbb
ccc

空白文字列に文字列を結合する

>>> s = ''
>>> s
''
>>> s += 'a'
>>> s
'a'
>>> s += 'b'
>>> s
'ab'

数値を文字列に変換する

>>> str(12)
'12'
>>> type(str(12))
<class 'str'>
>>> str(12) + str(34)
'1234'

バックスラッシュによるエスケープ
バックスラッシュを使って改行やタブを文字列に入れることができる
改行は\n、タブは\tで表す

>>> 'ab\ncd'
'ab\ncd'
>>> print('ab\ncd')
ab
cd
>>> 'ab\tcd'
'ab\tcd'
>>> print('ab\tcd')
ab	cd

シングルクォート、ダブルクォート、バックスラッシュを文字列に入れるときは
それぞれ、\', \", \\で表す

>>> 'ab\'cd'
"ab'cd"
>>> 'ab\"cd'
'ab"cd'
>>> 'ab\\cd'
'ab\\cd'
>>> print('ab\\cd')
ab\cd

文字列の連結

>>> 'ab' + 'cd'
'abcd'
>>> s = 'ab'
>>> t = 'cd'
>>> s + t
'abcd'

文字列の繰り返し

>>> 'ab' * 3
'ababab'

文字列から文字を抽出する

>>> s = 'abcde'
>>> s[0]
'a'
>>> s[1]
'b'
>>> s[4]
'e'
>>> s[-1]
'e'
>>> s[-2]
'd'
>>> s[-5]
'a'

文字列から一部の文字列を取り出す

>>> s
'abcde'
s[0]からs[1]までを取り出す
>>> s[0:2]
'ab'
>>> s[0:3]
'abc'
>>> s[1:3]
'bc'
>>> s[1:4]
'bcd'
s[0:3]と同じ意味になる
>>> s[:3]
'abc'
>>> s[:4]
'abcd'
s[1]以降のすべて
>>> s[1:]
'bcde'
>>> s[2:]
'cde'
最後の3文字を取り出す
>>> s[-3:]
'cde'

2文字ごとに取り出す
>>> s = 'abcdefghi'
>>> s[::2]
'acegi'
3文字ごとに取り出す
>>> s[::3]
'adg'
後ろから2文字ごとに取り出す
>>> s[::-2]
'igeca'

文字列の長さの取得

>>> len('abc')
3

文字列の分割

>>> s = 'ab,cd,ef'
カンマで区切る
>>> s.split(',')
['ab', 'cd', 'ef']
>>> s = 'ab cd ef'
スペースで区切る(splitの引数になにも与えなくていい)
>>> s.split()
['ab', 'cd', 'ef']

文字列のリストの結合

>>> l = ['ab', 'cd', 'ef']
リストの各要素をカンマで結合する
>>> ','.join(l)
'ab,cd,ef'
ハイフンで結合する
>>> '-'.join(l)
'ab-cd-ef'
スペースで結合する
>>> ' '.join(l)
'ab cd ef'
空文字で結合する
>>> ''.join(l)
'abcdef'
改行で結合する
>>> '\n'.join(l)
'ab\ncd\nef'
>>> print('\n'.join(l))
ab
cd
ef
>>> s = 'abcde'
sはabで始まるか?
>>> s.startswith('ab')
True
>>> s.startswith('b')
False
sはeで終わるか?
>>> s.endswith('e')
True
>>> s.endswith('ef')
False

>>> s = 'ababab'
sのなかでabが最初に現れる位置
>>> s.find('ab')
0
sのなかでabが最後に現れる位置
>>> s.rfind('ab')
4
sのなかにabは何回現れるか
>>> s.count('ab')
3
sは英字と数字だけからなる文字列か?
>>> s.isalnum()
True
>>> 'ab!'.isalnum()
False