文字列の表現
Pythonの文字列は、ダブルコーテションやシングルコーテションなどで囲んで記述します。
文字列は、語、単語、文、文章などといったもの話をコードないで表現したい時に使います。
コードで確認しましょう。
s = "Hello,world!"
print(a)
t = 'Hello,paiza!'
print(t)
実行すると
Hello,world!
Hello,paiza!
となります。
参考資料
- シングルクォーテーションで囲む
- コード:
s = 'Hello, World!' print(s)
- コード:
- ダブルクォーテーションで囲む
- コード:
s = "Hello, World!" print(s)
- コード:
文字列のインデックス i の文字を取得
print(s[0])
print(s[0])
print(s[-1])
print(s[-2])
File "Main.py", line 7, in <module>
print(s[13])
IndexError: string index out of range
(Exit status: 1)
s[i]
のように書くと、i の値に応じて文字列 s のなかの文字列を取得することができる- インデックスは 0 から振られる
- 参考資料2
s[i]
の i が正の数のとき、文字列 s のインデックス i の文字列を取得できる- コード:
s = "Hello, World!" print(s[0])
s[i]
の i が負の数のとき、インデックスが文字列 s の文字数 + i
である文字列を取得できる- コード:
s = "Hello, World!" print(s[-1]) # 文字列 s の末尾の文字列が出力される print(s[-2]) # 文字列 s の末尾から 2 番目の文字列が出力される
- 「文字列の長さ」とは「文字列の文字数のこと」
s[i]
の i が文字列 s の文字数以上の数であるとき、エラーが発生する
- コード:
s = "Hello, World!" print(s[13]) # エラーが発生する
print(s[1:4])
print(s[:5])
print(s[1:4])
print(s[:5])
Hello
world!
s[i:j]
のように書くと、文字列 s のインデックスが i から j-1 までの部分文字列を取得することができる- コード:
s = "Hello, World!" print(s[1:4])
s[:j]
のように指定すると、先頭の文字列からインデックスが j-1 の文字列までの部分文字列を取得できる- コード:
s = "Hello, World!" print(s[:5])
s[i:]
のように指定すると、インデックスが i の文字列から末尾の文字列までの部分文字列を取得できる- コード:
s = "Hello, World!" print(s[7:])
s[:]
のように指定すると、先頭から末尾までの部分文字列、つまり元と同じ文字列を取得できる- コード:
s = "Hello, World!" print(s[:])
文字列の長さを取得(len)
- 「文字列の長さ」とは、「文字列の文字数」のこと
len(s)
のように len 関数を使うと、文字列 s の長さを取得できる- コード:
s = "Hello, World!" print(len(s))
文字列の結合(+)
Hellowold!
s1="Hello"
s2="wold!"
print(s1 + s2)
Hellowold!
Hello wold!
Hellowold!
Hello wold!
Hellowold!
s1="Hello"
s2="wold!"
print(s1 + s2)
print(s1 , s2)
s1 += s2
print(s1)
Hellowold!
Hello wold!
Hellowold!
- 2 つの文字列をつなげること
- たとえば、
"abc"
と"def"
を結合すると、"abcdef"
となる
s + t
のように + 演算子を使うと、文字列 s と文字列 t が結合された新たな文字列を取得することができる- コード:
s = "Hello " t = "World!" print(s + t)
s += t
のように += 演算子を使うと、文字列 s と文字列 t が結合された新たな文字列が、変数 s に再代入される- コード:
s = "Hello " t = "World!" s += t print(s)
s + t
のように文字列 s と文字列 t を結合しても、文字列 s や、文字列 t が変わるわけではない- コード:
s = "Hello " t = "World!" u = s + t print(s, t, u)
文字列の反復とは、同じ文字列を何回も繰り返す事です。
例えば、aの10回反復はaが10個連なる文字列になりますし、abcの2回反復はabcbacという文字列になります。
この文字列の反復は、*演算子を使います。
コードで確認しましょう。
s1 = "a"
print(s1 * 10)
s2= "abc"
print(s2 * 2)
コードで確認すると
aaaaaaaaaa
abcabc
この様に、*演算子を使うと文字列が反復されます。
この様に、文字列を反復するとその文字列が任意の回数繰り返された新しい文字列を得る事ができます。
新しい文字列が作られるので、下も文字列が変わったりする事はありません。
コードに次の行を足して確認しましょう。
s1 = "a"
print(s1 * 10)
s2= "abc"
print(s2 * 2)
print(s1 , s2)
実行すると
aaaaaaaaaa
abcabc
a abc
この様に、それぞれの文字列は変わっていませんね。
反復演算をすると、新しい文字列ができることを確認できました。
では、反復演算に使った変数が示す文字列を反復演算によってできる、新しい文字列に更新したいときは、どうしたら良いのでしょうか?
その様な時は、再代入を行うのが良いです。
次のコードで確認しましょう。
s1 = "a"
print(s1 * 10)
s2= "abc"
print(s2 * 2)
print(s1 , s2)
s1 = s1 * 10
s2 = s2 * 2
print(s1, s2)
実行すると
aaaaaaaaaa
abcabc
a abc
aaaaaaaaaa abcabc
このコードでは、変数s1に文字列s1を10回反復した文字列を、変数s2に文字列s2を2回反復した文字列をそれぞれ再代入しています。
この様に、反復演算後の文字列が出力され変数s1と変数s2の値が示す値が更新された事が解りました。
また、この反復の演算は、*=演算子を用いて書く事もできます。
コードで確認してみましょう。
s1 ="a"
print(s1 * 10)
s2= "abc"
print(s2 * 2)
print(s1, s2)
s1*=10
s2*=2
print(s1, s2)
実行すると
aaaaaaaaaa
abcabc
a abc
aaaaaaaaaa abcabc
先ほどと同じ文字列が出力されました。
参考資料1
- 同じ文字列を何度も繰り返すこと
- たとえば、
"abc"
を 2 回反復すると、"abcabc"
になる
s * n
のように * 演算子を使うと、文字列 s が n 回反復された新たな文字列を取得することができる- コード:
s = "abc" n = 2 print(s * n)
s *= n
のように *= 演算子を使うと、文字列 s が n 回反復された新たな文字列が、変数 s に再代入される- コード:
s = "abc" n = 2 s *= n print(s)
s * n
のように文字列 s を n 回反復しても、文字列 s が変わるわけではない- コード:
s = "abc"
n = 2
t = s * n
print(s, n, t)
f 文字列
コードを書いていると、文字列の中で変数を使いたい時があります。
この際、次のコードの様に結合させる方法があります。
次のコードで確認します。
time = "10"
place = "会議室 A"
print(time + "時から" + place + "で会議が行われる。")
実行すると
10時から会議室 A会議が行われる。
この様に、出力されます。
このコードでも正しく動きますが、変数の値を使うところで途切れ途切れになていて、書く事が面倒だったりみづらさを感じたりします。
また、変数timeに代入されている値は、今回は文字列ですがここに整数値が入るとエラーが発生します。
確かめてみましょう。
コード
time = 10
place = "会議室 A"
print(time + "時から" + place + "会議が行われる。")
実行すると
Traceback (most recent call last):
File "Main.py", line 3, in <module>
print(time + "時から" + place + "会議が行われる。")
TypeError: unsupported operand type(s) for +: 'int' and 'str'
(Exit status: 1)
この様に、エラーが発生します。
place ="会議室 A"
print(f"{time} 時から{place}で会議が行われる")
実行すると
10 時から会議室 Aで会議が行われる
この様に出力されます。
timeの数値が文字列で無かった場合、文字列の変換も行なってくれます。
time = 10
place ="会議室 A"
print(f"{time} 時から{place}で会議が行われる")
実行すると
10 時から会議室 Aで会議が行われる
エラーなく実行されました。
timeの値を使う時、整数から文字列に変換されたからです。
参考資料
time = 10 # time に代入する値を整数値の 10 に変更
place = "会議室 A"
print(f"{time}時から{place}で会議がおこなわれる。")
f'変数 x が示す値は {x} だ'
のように f 文字列を使うと、文字列内の波括弧の箇所が変数 x の値で置換される- コード:
time = "10" place = "会議室 A" print(f"{time}時から{place}で会議がおこなわれる。")
- 変数 x が示す値は文字列に限らない