おねーちゃん!キーボード入力したり、ファイルからデータを読み込んできた時の文字列に改行コード(\n)が入ってたり、余計な空白が入ってたりして邪魔なんだけど、これを簡単に無くすことはできない??
確かに、外から読み込んできたデータって綺麗に整ってないことがあるから扱いに困るよね
じゃあ今回は文字列を扱いやすいように加工する方法を紹介しようか!
ぜひお願いします!
じゃあ最初は、指定した文字列で区切って配列型で管理できるようにする「.split()」
ほうほう
例では「,」で区切ってるけど、「\n」にすれば改行ごとに区切ることもできるってことだね!
そういうことだね!
次は、前後の空白や改行を取り除いてくれる「.strip()」
データから取得した文字列に不必要な空白があったりするけど、それを一発で解決できるのは便利だね!
ちなみに、「()」の中に文字列を指定すれば、前後についているその文字列を取り除くこともできるよ
「しん」だけが取れて「ぶんし」になるんじゃなくて、「し」と「ん」が取れて「ぶ」になるんだね汗
そうなんだよねぇ
だから、基本的には前後の空白文字を取り除いてくれるものって認識で十分だよ!
次は、特定の文字列を別の文字列に変換してくれる「.replace()」
日時の表示方法を変更するとかで使えそうかも
「.replace(変更したい文字, "")」ってすれば、「.strip()」じゃできない文字の途中にある必要ない文字の削除にも対応できる点も便利なんだよね
次は、アルファベットをすべて小文字にする「.lower()」と、すべて大文字にする「.upper()」
大文字小文字の区別なしで2つの文字列が同じかどうか確認したい時に使えるんだね!
最後は配列の要素をすべて繋げて1つの文字列にする「.join()」
区切り文字を指定すれば、連結部分に区切り文字が入って、そうでなければそのまま繋げてくれるよ!
おお!いちいち配列をループして「+=」で繋げなくても良いのは簡単で良いね!!
外部のデータを扱うようになるとデータを整理する機会も増えるだろうし、今回も最後に一覧表を置いておくね
| 構文 | 機能 | 例 | 出力 |
|---|---|---|---|
| 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()」は誕生日の年号で区別したい時に使うとかできそう!
無理に覚えなくても良いけど、そういうこともできるなーくらいの認識を持っておけば十分!
