ARMtech

Python入門:文字列操作

文字列操作

Pythonは、文字列を操作するためのメソッドや機能が豊富に揃っています。
この記事では、Pythonでの基本的な文字列の操作方法を解説しています。

文字列はイテラブル

Pythonでは、文字列はイテラブルとして扱われています。そのため、文字列はfor文を使うことで、一文字ずつ抜き出して処理を行うことができます。

#一文字ずつ出力するプログラム

text = "おはようございます"

for char in text :

print(char)

実行結果









上のコードでは、for文を使って文字列を一文字ずつ変数charで取得して出力しています。

#文字の中の"a"の数を数えるプログラム

text = "asdfafda"

acount = 0

for char in text :

if char == "a":

acount += 1

print("文字列textにはaが{acount}字あります。")

実行結果

文字列textにはaが3字あります。

上のコードでは、変数charが"a"と等しければ変数acountを一つずつ増やすことで、変数textに含まれる"a"の字数をを数えています。

Pythonでは、文字列のインデックスを指定して、特定の文字を取り出すことができます。

#インデックスを指定して特定の文字を出力するプログラム

text = "abcde"

print(text[0])

print(text[2])

print(text[4])

実行結果

a
c
e

文字列はリストやタプルのように[]の中にインデックスを指定することができます。

また、文字列にスライス操作をすることで、部分文字列を取得できます。

#開始インデックス、終了インデックスを指定して文字列をスライスするプログラム

text = "abcde"

print(text[0:2])

print(text[3:5])

実行結果

ab
de

[]の中に開始インデックスと終了インデックスをコロン(:)で区切って入れることで、文字列をスライスすることができます。

文字列のメソッド

これまで説明した内容を利用すれば、文字列操作を自由自在に行うことができます。また、Pythonではstr型に備わっているメソッドが豊富に揃っています。

・replaceメソッド

replaceメソッドは、文字列の一部を引数に置き換えて、返します。

text = "今日の日直はトムくん"

text = text.replace("今日","明日") #今日を明日に変換

text = text.replace("トムくん","チャーリーくん") #トムくんをチャーリーくんに変換

print(text)

実行結果

明日の日直はチャーリーくん

replaceメソッドは、第一引数に置き換えてなくなる文字列、第二引数に置き換えて新しく入れられる文字列を指定します。

print("give me give me give me".replace("me","you"))

print("give me give me give me".replace("me","you",2))

実行結果

give you give you give you
give you give you give me

第三引数に何個置き換えるか指定できます。また、第三引数を指定しない場合は、すべて置き換わります。

・findメソッド

findメソッドは、文字列の中に引数の文字列が見つかれば、見つけた場所のインデックスを返します。

text = "abcdefg"

print(text.find("a"))

print(text.find("def"))

print(text.find("ssr"))

実行結果

0
3
-1

もし、文字列の中に引数の文字列が見つからなかった場合は、-1を返します。

・stripメソッド

stripメソッドは、文字列の両端にあるスペース、タブ文字、改行を削除します。

text = " abcdefg\t"

print("F"+text+"E")

print("F"+text.strip()+"E")

text = " abcdefg "

print("F"+text+"E")

print("F"+text.strip()+"E")

実行結果

F abcdefg    E
FabcdefgE
F abcdefg E
FabcdefgE

文字列の片方のみを削除したい場合は、rstripメソッド、lspritメソッドを使います。

text = " center "

print("left" + text.rstrip() + "right")

print("left" + text.lstrip() + "right")

実行結果

left centerright
leftcenter right

・splitメソッド

splitメソッドは、文字列をスペース、タブ文字、改行で分割し、リストを生成します。

text = "リンゴ ゴリラ ラッカセイ"

print(text.split())

text = "リンゴ\nゴリラ\nラッカセイ"

print(text.split())

text = "リンゴ\tゴリラ\tラッカセイ"

print(text.split())

実行結果

['リンゴ', 'ゴリラ', 'ラッカセイ']
['リンゴ', 'ゴリラ', 'ラッカセイ']
['リンゴ', 'ゴリラ', 'ラッカセイ']

また、splitメソッドは引数を指定することで、分割する文字を指定することができます。

text = "リンゴ/ゴリラ/ラッカセイ"

print(text.split("/"))

text = "リンゴdividゴリラdividラッカセイ"

print(text.split("divid"))

実行結果

['リンゴ', 'ゴリラ', 'ラッカセイ']
['リンゴ', 'ゴリラ', 'ラッカセイ']

・joinメソッド

splitメソッドとは逆に、リストから文字を作るメソッドがjoinメソッドです。

list=["リンゴ","ゴリラ","ラッカセイ"] #リストの要素はstr関数である必要がある。

print("".join(list))

print("/".join(list))

実行結果

リンゴゴリララッカセイ
リンゴ/ゴリラ/ラッカセイ

上のコードのように、連結するとき各要素の間に入る文字列からjoinメソッドが使われています。

・upper、lowerメソッド

upperメソッドは文字列を大文字に変換します。lowerメソッドは文字列を小文字に変換します。

print("oomozi".upper())

print("Oomozi".upper())

print("KOMZI".lower())

print("Komozi".lower())

実行結果

OOMOZI
OOMOZI
komzi
komozi

また、大文字か小文字か判定したい場合は、isupperメソッド、islowerメソッドを使います。

print("OOMOZI".isupper())

print("Oomozi".isupper())

print("komozi".islower())

print("Komozi".islower())

実行結果

True
False
True
False

練習問題

では、これまでの内容をもとに次のプログラムを作ってみましょう!

  1. <>を含む文字列が入力されると、<>の中身を出力するプログラム
    例:これは<文字列>です。→文字列、
      :<カッコ>は<2つ>あります。→カッコ、2つ、
  2. 英語が入力されると、大文字は小文字、小文字は大文字に変換して出力するプログラム
    例:AEMtech→armTECH

解答例※あくまで一例です。

(1)

text = input("文字列を入力してください>>")

newtext = "" #空欄の文字列の変数newtextを宣言

scan = False #真偽値Falseの変数scanを宣言

for char in text : #一文字ずつ変数charに代入する

if char == "<" :

scan = True #<と変数charが等しければ変数scanはTrue

elif char == ">" :

scan = False #>と変数charが等しければ変数scanはFalse

newtext += "、"

elif scan : #変数scanがTrueかつ変数charが"<"や">"出でないときに変数newtextに変数charを追加する

newtext += char

print(newtext)

実行結果

文字列を入力してください>>これは<文字列>です。
文字列、

文字列を入力してください>><カッコ>は<2つ>あります。
カッコ、2つ、

(2)

text = input("英語の文字列を入力してください>>")

newText = ""

for char in text : #一文字ずつ変数charに代入する

if char.isupper() :

newText += char.lower() #大文字なら小文字に変換

else :

newText += char.upper() #小文字なら大文字に変換

print(newText)

実行結果

英語の文字列を入力してください>>ARMtech
armTECH

英語の文字列を入力してください>>QwRe
qWrE

最後に

この記事では、Pythonでの文字列捜査について解説しました。 もっとPythonを学びたい!という方はこちらの記事でPythonの基本的な構文を学習することが出来ますのでぜひ立ち寄ってみてください!

<   >
© 2024 ARMtech