Pythonのススメ3

はじめに

Pythonでプログラムを書くにあたり、文法や言語仕様などの個人的なメモを記載する。
いくつか回数に分けて投稿することになると思う。
個人的なメモなので自分視点な構成になると思うが、もし誰かの役に立つなら嬉しい。
今回は文字列型。前回の記事は Pythonのススメ2 - Hello, world. を参考されたし。

文字列型:str

文字列の値を扱うには文字列型(str)を使う。

サンプルプログラム(prog.py)

print('Hello, world!')
print("Hello, world!")

#エスケープの方法は以下の通り。
print('I\'m Ichiro.')
print("I'm Ichiro.")
print("I\'m Ichiro.")

#変数の宣言および標準出力。
str = "Guten Tag!"
print(str)

サンプルプログラム(prog.py)実行結果

Hello, world!
Hello, world!
I'm Ichiro.
I'm Ichiro.
I'm Ichiro.
Guten Tag!

動的型付け/静的型付け

Pythonは動的型付けの言語である。
本章については、 Pythonのススメ1 - Hello, world. の「動的型付け/静的型付け」を参照。

文字列型のテクニック

◆文字列の結合と繰り返し◆

文字列の結合

文字列の結合は、「+」を使うことで実現できる。

myStr = "Hello, " + "world!"
print(myStr)

実行結果は以下の通り。

Hello, world!
文字列の繰り返し

特定の文字列を繰り返すには「*」を使うことで実現できる。
その際、何回その文字列を繰り返すかを指定する。

myStr = "Hoge" * 5
print(myStr)

実行結果は以下の通り。

HogeHogeHogeHogeHoge

◆インデックス表記◆

文字列のある位置を指定して1文字を取り出す機能。
文字列から1文字を取り出すためには、以下のように文字列のインデクスを指定する。

myStr = "Hello"
myChar = myStr[0]
print(myChar)

ちなみに、Javaだと以下のような感じ。

String myStr = "Hello";
myChar = myStr.charAt(0);
System.out.println(myChar);

実行結果は以下の通り。

H

なお、文字列数より大きいインデクスを指定するとエラーになる。

myStr = "Hello"
myCharOutOfIndex = myStr[10]
print(myCharOutOfIndex)

実行結果は以下の通り。
「文字列数を超えるインデクスを指定したためにIndexErrorが起こっている」ことがわかる。

Traceback (most recent call last):
  File "C:/Users/...../MyProject/prog.py", line 5, in <module>
    outOfIndex = myStr[10]
IndexError: string index out of range

ちなみに、Pythonではインデクスに負数を使うこともできる(例えば今回の例の場合、「-5」を指定するとコンソール上に「H」が出力される)。
しかしわざわざ負数を指定することがあるのだろうか・・・。

◆スライス◆

スライスとは、ある文字列に対して範囲を指定して、その範囲の文字列を取り出す技法のこと。
2つの整数型をコロンで挟んで指定する。ただし、先頭文字および末尾文字を含むスライスをする場合はその限りではない。
Javaでいうところの、String #subString のようなもの。

myStr = "Hello"
subStr = myStr[1:3]
print(subStr)

# 先頭文字を含むスライス。
subStr = myStr[:3]
print(subStr)

# 末尾文字を含むスライス。
subStr = myStr[3:]
print(subStr)

実行結果は以下の通り。

el
Hel
lo

◆文字列の長さ◆

文字列の長さを取得するためには、len()関数を使う。戻り値型は整数型。
「Hello」は5文字なので、以下のプログラムを実行したした場合、5が返る。

length = len(myStr)
print(length)

JavaのString #lengthに相当する。

◆文字列の有無◆

文字列の中に、ある文字列が存在するかどうかを調べるにはinを使う。
含む場合はTrueが、含まない場合はFalseが返る。

myStr = "Hello"

isContain = "ll" in myStr
print(isContain)

isContain = "Yeah" in myStr
print(isContain)

実行結果は以下の通り。

True
False

JavaのString #containsに相当する。

◆文字列の分割◆

文字列を分割するにはsplit()メソッドを使う。
分割したい文字列に対してメソッドを呼び出し、引数に区切り文字(デリミタ)を指定する。
以下の例ではデリミタとしてハイフンを指定しているが、別にハイフンでないとダメというわけではない。

myStr = "Hello-こんにちは-Guten Tag".split('-')
print(myStr)

実行結果は以下の通り。

['Hello', 'こんにちは', 'Guten Tag']

JavaのString #splitに相当する。

◆区切り文字による文字列の結合◆

文字列同士を区切り文字で結合するにはjoin()メソッドを使う。

myStr = '-'.join(['Hello', 'こんにちは', 'Guten Tag'])
print(myStr)

実行結果は以下の通り。

Hello-こんにちは-Guten Tag

終わりに

Pythonの文字列型について、サンプルプログラムを交えながら、変数宣言の仕方や言語の仕様を記載した。
今後は、コレクションなどについても記載していく予定。