Python チュートリアル - データ型文字列
このセクションでは、Python String データ型について説明します。
文字列は、コンピューター内のバイナリデータで表される一連の文字です。Python では、文字列はユニコード
文字のコレクションです。
Python で文字列を作成する
文字列は、単一引用符または二重引用符を使用して作成できます。複数行の文字列は、三重引用符を使用して作成することもできます。
x = "String of characters"
x = """Multiline
string"""
文字列の要素にアクセスする
スライス演算子 []
は、文字列の文字にアクセスするために使用されます。インデックスは、他の Python データ型として 0 から始まります。
>>> x = 'Python Programming'
>>> print('x[0] =', x[0])
'P'
>>> print('x[4:15] =', x[4:15])
'on Programm'
>>> x[4] = 'l'
TypeError: 'str' object does not support item assignment
TypeError
が発生します。負のインデックス付け
負のインデックスを使用して、文字列内の文字にアクセスできます。たとえば、インデックス -1
は最後の文字を指します。同様に、インデックス -2
は最後から 2 番目の文字を指します。
>>> s = "Python"
>>> print(s[-1])
'n'
>>> print(s[-2])
'o'
>>> print(s[-3])
'h'
文字列から文字を削除する
文字列は不変なので、文字列の文字は削除できません。ただし、同じ名前に新しい文字列を割り当てることができます。これは、以下のコードで示されています。
>>> s = 'Python'
>>> s = 'Program'
>>> s
'Program'
del
キーワードを使用して、文字列全体を削除できます。
>>> del s
Python 文字列操作
文字列に対して実行できる操作は多数あります。それらのいくつかは次のとおりです。
2つ以上の文字列を連結する
+
演算子を使用して、2つ以上の文字列を連結できます。
>>> s1 = 'Python '
>>> s2 = 'Programming'
>>> print(s1 + s2)
'Python Programming'
2つの文字列を一緒に記述する場合、+
演算子のように文字列を連結します:
>>> print('Python ' 'Programming')
'Python Programming'
文字列が複数行にある場合、括弧を使用して 2つの文字列を連結することもできます。
>>> s = ('Python '
'Programming')
>>> s
'Pyhton Programming'
文字列を繰り返す
for
ループを使用してリストを反復処理できます。
s = "Python"
for i in s:
print(i)
P
y
t
h
o
n
文字列メンバーシップチェック
in
キーワードは、文字列内の部分文字列の存在を確認するために使用されます。
>>> s = 'Python'
>>> print('a' in s)
False
>>> print('o' in s)
True
文字列に適用可能な組み込み関数
他のタイプのシーケンスに適用される関数は、文字列にも適用できます。一般的に使用される関数は、文字列内の文字数を求めるための len()
と、文字列内の要素のインデックスと値をペアとして含むオブジェクトを返す enumerate()
です。
Python 文字列フォーマット
エスケープシーケンス
エスケープシーケンスは、出力ストリームに特別なシンボル(Python で特別な意味を持つ)を出力するときに使用されます。たとえば、出力する場合:
James asked, "Do you know Andrew's place?"
ここでは、テキストに両方の引用符が含まれているため、単一引用符または二重引用符を使用できません。この文字列を一重引用符または二重引用符で囲むと、SyntaxError
が発生します。
>>> print("James asked, "Do you know Andrew's place?"")
SyntaxError: invalid syntax
>>> print('James asked, "Do you know Andrew's place?"')
SyntaxError: invalid syntax
この問題の解決策は、三重引用符またはエスケープシーケンスを使用することです。
Python では、エスケープシーケンスはバックスラッシュから始まります。バックスラッシュは、インタープリターへの指示です。
print ステートメントで単一引用符を使用している場合、テキストからの単一引用符はすべてエスケープする必要があります。同様に、文字列を表すために二重引用符を使用している場合は、テキストの二重引用符をエスケープする必要があります。
# using triple quotation marks
print('''James asked, "Do you know Andrew's place?"''')
# escaping single quotes
print('James asked, "Do you know Andrew\'s place?"')
# escaping double quotes
print('James asked, "Do you know Andrew\'s place?"')
Python のエスケープシーケンスが説明されている次の表を検討してください。
エスケープシーケンス | 説明 |
---|---|
\\ |
バックスラッシュをエスケープします |
\' |
単一引用符をエスケープします |
\" |
二重引用符をエスケープします |
\a |
ASCII アラートまたはベル |
\b |
バックスペースを生成します |
\f |
用紙送りを生成します |
\n |
新しい行を生成します。 |
\r |
キャリッジリターン |
\t |
水平タブを生成します |
\v |
垂直タブを生成します |
\ooo |
8 進文字 ooo |
\xHH |
16 進文字 HH |
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib
>>> print("First Line\nSecond Line")
First Line
Second Line
エスケープシーケンスを無視する生の文字列 r
文字列のエスケープシーケンスを無視するには、文字列の前に r
または R
で示される生の文字列を作成します。
生の文字列では、エスケープシーケンスは無視されます。次の例を参照してください。
#without r
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib
#with r
>>> print(r"C:\\User\\Python36-32\\Lib")
C:\\User\\Python36-32\\Lib
ここで、エスケープシーケンスが無視されることがわかります。
文字列の format()
メソッド
format()
メソッドは文字列をフォーマットするための強力なツールです。フォーマットされた文字列には、format()
メソッドによって置き換えられるプレースホルダー {}
があります。
位置引数とキーワード引数は、置換の順序を指定するために使用されます。
#default placeholder
>>> s1 = "{}, {} and {}".format('Bread', 'Butter', 'Chocolate')
>>> print(s1)
'Bread, Butter and Chocolate'
#positional arguments
>>> s2 = "{1}, {2} and {0}".format('Bread', 'Butter', 'Chocolate')
>>> print(s2)
'Butter, Chocolate and Bread'
#keyword arguments
>>> s3 = "{a}, {x} and {c}".format(x = 'Bread', c = 'Butter', a = 'Chocolate')
>>> print(s3)
'Chocolate, Bread and Butter'