Phython

【Python入門】文字列とは?
文字列の使い方やインデックス、メソッドまでご紹介

本記事では、python入門ということで、文字列の基本的な使い方についてご紹介していこうと思います。

文字列は、数ある変数の型の中でも数値に並んでよく使うものになってくるので、本記事を通して使い方をマスターしてしまいましょう。

ちなみに、本ブログでは初心者の方でも理解できるように丁寧に説明しているので、全くの初心者という方も安心して最後まで見ていってください。

また、pythonをまだインストールしていないといった方は以下の記事を参考にしてインストールしてみましょう。

この記事でわかること

  • 文字列について
  • 文字列のインデックスについて
  • 文字列のメソッドについて

 文字列について

本記事では、まず初めに「そもそも文字列とは何なのか」について説明していこうと思います。
プログラミングについて学習したことがないとあまり聞かない用語だと思うので、よく意味が分かっていないという方はこの機会に覚えてしまいましょう。

文字列とは?

文字列とは、その名の通り『文字を複数個並べた羅列のこと』です。
これだけだとイメージ湧かないと思うので、具体的な例を示そうと思います。

まず、ここでいう文字とはアルファベット、日本語、数字などのことです。
これらを組み合わせたものが文字列となります。

では、実際のコードを用いてどういったものが文字列にあたるのかを見ていきましょう。

<input>

print("2", type("2"))
print("a", type("a"))
print("apple", type("apple"))
print("2+5", type("2+5"))
print("こんにちは", type("こんにちは"))

<output>

2 <class 'str'>
a <class 'str'>
apple <class 'str'>
2+5 <class 'str'>
こんにちは <class 'str'>

<input>の各プリント文の中にある『type()』は、()の中に入っているものの型を出力する関数となっています。
ちなみに、文字列の場合は『string型』と言って『str』と記載されることが多いので覚えておきましょう。

これらを踏まえると、上のコード内にあるものはすべて文字列であることがわかります。

ここで、「2+5みたいな式も文字列になってしまうの?」と疑問に思われる方もいるかもしれませんが、『2+5』のみだと文字列にはならず、数値として扱われるのですが、『”2+5”』のように『"』で囲むと文字列として扱うことになるので注意しましょう。

ちなみに、『"』で囲まれていたら基本どんなものでも文字列として扱えるようになります。

文字列の基本的な使い方①

文字列とはどういったものなのかを理解したうえで、文字列の基本的な使い方を見ていきましょう。

<input>

print("hello")
# 文字列中に『"』を含む場合は前に\を付ける
print("he say \"I am a student.\"")
# 改行
print("\n")
print("Tom:I like soccer.\nNancy:Me too!")
# 文字列中に『\n』を含む場合は前にrをつける
print(r"C:\name\name")

<output>

hello
he say "I am a student."


Tom:I like soccer.
Nancy:Me too!
C:\name\name

基本的にはコードを読んでもらえれば大丈夫ですが、重要なところはここでも軽く説明していこうと思います。

今回は<input>の3行目と8行目ですね。
3行目では文字列の中に『"』といった文字が、8行目では文字列の中に『\n』といった文字が入ってしまっています。
これだと、例えば3行目ではコンピュータが文字列の終わりの位置を間違えてしまいますし、8行目ではコンピュータが人間の意図していない場所で勝手に改行を行ったりしてしまいます。

これらを防ぐために、3行目では『"』の前に『\』を、8行目では文字列の前に『r』と入れています。

文字列の基本的な使い方②

<input>

# \nを使わずに改行
print("""
class A
class B
class C
""")
# +や*と文字列
print("Hello." + "Tom")
print("Hello.""Tom")
print("He runs" + " very"*3 + " fast.")

<output>

class A
class B
class C

Hello.Tom
Hello.Tom
He runs very very very fast.

ここでは、\nを使わずに改行する方法や、文字列の結合や連呼を数学記号を用いて行う方法の紹介を行っています。
これらは正直あまり使いませんが、知っておいて損はないので確認しておきましょう。

文字列の代入

続いては文字列の代入方法についてです。
こちらもコードを見ながら確認していきましょう。

<input>

print("{}".format("test"))
print("This is {}".format("test"))
print("{},{},{}".format(1, 2, 3))
print("{0},{1},{2}".format(1, 2, 3))
print("{2},{1},{0}".format(1, 2, 3))
print("My name is {family} {first}.".format(first="Yuki", family="Tanaka"))

<output>

test
This is test
1,2,3
1,2,3
3,2,1
My name is Tanaka Yuki.

コードを見るとわかる通り、文字列の代入は『{}.format()』を用いて行うことが出来ます。
3行目のように複数個を同時に代入することも可能です。

また、4行目や5行目のようにformatの中の順番通りに並べないといったこともできます。

さらに、formatの中の文字列に名前を付けて、その名前を使って代入といったことも行うことが出来ます。

 文字列のインデックスについて

続いて、文字列のインデックスについてです。
インデックスとはどういったものなのか、またその使い方を説明しているので見ていきましょう。

インデックスとは?

文字列は、複数の文字から構成されていて文字一つ一つのことを要素と呼びます。
要素には先頭から順に0,1,2...といった番号が割り振られており、この番号のことをインデックスと呼んだりしています。

つまり、『apple』という文字列中の要素『a』のインデックスは0,『l』のインデックスは3といった形になります。

この時、先頭のインデックスが0になるので注意しましょう。

インデックスの使い方

では、インデックスのイメージをつかめたところで実際のコードを用いてインデックスの使用方法について確認していきましょう。

<input>

word = "programming"
# インデックス1の要素を取り出す
print(word[1])
# 文字列の最後の要素を取り出す
print(word[-1])
# 文字列の0から2番目の要素を取り出す
print(word[0:3])
# 文字列の3番目以降の要素を取り出す
print(word[3:])
# 文字列のすべての要素を取り出す
word = "q" + word[1:]
print(word[:])

<output>

r
g
pro
gramming
qrogramming

このような形で、インデックスを指定することで文字列中の指定の要素を取り出すことが出来ます。
要素の取り出し方は様々なので、コードをよく確認して自分でも手を動かして試してみましょう。

また、11行目では『q』という文字と『word』という文字列の1番目以降の要素を結合して新たな単語を生み出しています。
インデックスを用いるとこのようなこともできてしまうので覚えておきましょう。

 文字列のメソッド

最後に、文字列のメソッドについてです。
こちらもメソッドの意味から確認しているので、「メソッドって何?」といった方も是非見ていってください。

メソッドとは?

メソッドとは簡単に説明すると関数のようなものです。
何か値を渡して、その値に応じたものを返すといった役割を果たします。

今回は、文字列のメソッドということで文字列と共に使用することが出来るメソッドをご紹介していこうと思います。

文字列のメソッドの使い方

では、実際のコードを用いてメソッドの使い方を確認していきましょう。

<input>

string = "I like programing.I like sports too."
# startswithというメソッドを使用
print(string.startswith("I"))
print(string.startswith("a"))

<output>

True
False

メソッドは上記コードのように、『文字列.メソッド名』と記述することで使用することが出来ます。
たくさんの種類のメソッドがあるのですが、ここでは代表例として『startswith』を使用することとします。

『startswith』は()内の文字が文字列の開始文字化を調べるための関数で、開始文字ならば『True』、そうでないならば『False』を返すようになっています。

このほかにもいろいろなメソッドがあるので、その一部を紹介していこうと思います。

 様々なメソッド

ここからは、文字列のメソッドを一部紹介していこうと思います。

  • find、rfind:指定の文字を探す
  • count:指定の文字の数を数える
  • capitalize:文頭を大文字にする
  • title:単語の頭を大文字にする
  • upper、lower:すべての文字を大文字、小文字にする
  • replace:文字を取り換える

find、rfind:指定の文字を探す

<input>

string = "I like programing.I like sports too."
print(string.find("like"))
print(string.rfind("like"))

<output>

2
20

find()、rfind()では、()内の文字がどこにあるのかを探してくれます。
ちなみに、find()の方が文字列の先頭から指定の文字を探すメソッドで、rfind()の方が文字列の最後尾から指定の文字を探すメソッドになっています。

そのため今回は、『like』という文字列の場所を探しているのですが、find()では2、rfind()では20という数字が出力されています。

count:指定の文字の数を数える

<input>

string = "I like programing.I like sports too."
print(string.count("like"))

<output>

2

count()は、()内の文字列がいくつ入っているのかを調べるときに使用します。

capitalize:文頭を大文字にする

<input>

string = "I like programing.I like sports too."
print(string.capitalize())

<output>

I like programing.i like sports too.

capitalize()では、指定した文字列の文頭のみを大文字に変換します。

title:単語の頭を大文字にする

<input>

string = "I like programing.I like sports too."
print(string.title())

<output>

I Like Programing.I Like Sports Too.

title()では、指定した文字列の各単語の頭を大文字に変換します。

upper、lower:すべての文字を大文字、小文字にする

<input>

string = "I like programing.I like sports too."
print(string.upper())
print(string.lower())

<output>

I LIKE PROGRAMING.I LIKE SPORTS TOO.
i like programing.i like sports too.

upper()は指定した文字列中の文字をすべて大文字に、lower()は指定した文字列中の文字をすべて小文字に変換します。

replace:文字を取り換える

<input>

string = "I like programing.I like sports too."
print(string.replace("like", "love"))

<output>

I love programing.I love sports too.

replace()は、ある文字を別の文字に取り換えるためのメソッドです。

第一引数に文字列中の取り換えたい文字を、第二引数に第一引数の文字に代わって設定したい文字を指定します。

 まとめ

今回は、文字列についてその使い方からメソッドまで紹介してきましたがいかがだったでしょうか。

冒頭でも述べましたが、文字列は数値と並んでよく使用されるデータ型の一つで、メソッドも様々なものがあります。

自分でもどんどん使ってみてマスターしてしまいましょう。

-Phython
-,