タイトル画像
琴葉葵

おねーちゃん!キーボード入力したり、ファイルからデータを読み込んできた時の文字列に改行コード(\n)が入ってたり、余計な空白が入ってたりして邪魔なんだけど、これを簡単に無くすことはできない??

琴葉茜

確かに、外から読み込んできたデータって綺麗に整ってないことがあるから扱いに困るよね
じゃあ今回は文字列を扱いやすいように加工する方法を紹介しようか!

琴葉葵

ぜひお願いします!

琴葉茜

じゃあ最初は、指定した文字列で区切って配列型で管理できるようにする「.split()」

解説画像1
琴葉葵

ほうほう
例では「,」で区切ってるけど、「\n」にすれば改行ごとに区切ることもできるってことだね!

琴葉茜

そういうことだね!
次は、前後の空白や改行を取り除いてくれる「.strip()」

解説画像2
琴葉葵

データから取得した文字列に不必要な空白があったりするけど、それを一発で解決できるのは便利だね!

琴葉茜

ちなみに、「()」の中に文字列を指定すれば、前後についているその文字列を取り除くこともできるよ

解説画像3
琴葉葵

「しん」だけが取れて「ぶんし」になるんじゃなくて、「し」と「ん」が取れて「ぶ」になるんだね汗

琴葉茜

そうなんだよねぇ
だから、基本的には前後の空白文字を取り除いてくれるものって認識で十分だよ!

琴葉茜

次は、特定の文字列を別の文字列に変換してくれる「.replace()」

解説画像4
琴葉葵

日時の表示方法を変更するとかで使えそうかも

琴葉茜

「.replace(変更したい文字, "")」ってすれば、「.strip()」じゃできない文字の途中にある必要ない文字の削除にも対応できる点も便利なんだよね

解説画像7
琴葉茜

次は、アルファベットをすべて小文字にする「.lower()」と、すべて大文字にする「.upper()」

解説画像5
琴葉葵

大文字小文字の区別なしで2つの文字列が同じかどうか確認したい時に使えるんだね!

琴葉茜

最後は配列の要素をすべて繋げて1つの文字列にする「.join()」

解説画像6
琴葉茜

区切り文字を指定すれば、連結部分に区切り文字が入って、そうでなければそのまま繋げてくれるよ!

琴葉葵

おお!いちいち配列をループして「+=」で繋げなくても良いのは簡単で良いね!!

琴葉茜

外部のデータを扱うようになるとデータを整理する機会も増えるだろうし、今回も最後に一覧表を置いておくね

構文機能出力
str.split()区切り文字で分割"a,b,c".split(",")["a", "b", "c"]
str.strip()前後の空白や指定文字を削除(文字を指定するとその文字をすべて除去)"abcabcHelloabc".strip("abc")"Hello"
str.replace(a, b)a を b に置換"abcabc".replace("a", "x")"xbcxbc"
str.lower()小文字に変換"Hello".lower()"hello"
str.upper()大文字に変換"abc".upper()"ABC"
str.title()各単語の先頭文字を大文字に"hello world".title()"Hello World"
str.capitalize()先頭文字だけ大文字に"hello world".capitalize()"Hello world"
"区切り文字".join(リスト)リストの要素を1つの文字列に連結",".join(["a", "b", "c"])"a,b,c"
← 横にスクロールして確認しよう! →
琴葉茜

あと、文字列を加工するものじゃないけど、文字列の中身を特定の条件で確認したい時に便利な機能の一覧もおまけで紹介するね!

構文機能出力
str.startswith(x)
先頭が x かを判定
"hello".startswith("he")
True
str.endswith(x)
末尾が x かを判定
"test.py".endswith(".py")
True
str.find(x)
文字の位置を検索(最初の位置)
"banana".find("a")
1
str.count(x)
x の出現回数を数える
"banana".count("a")
3
琴葉葵

「.startswith()」は誕生日の年号で区別したい時に使うとかできそう!

琴葉茜

無理に覚えなくても良いけど、そういうこともできるなーくらいの認識を持っておけば十分!