とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

Pythonの文字列操作 基礎の基礎

WindowsでPython シリーズ その11


今日は文字列操作をやります。
どんなプログラム言語を触るにしても絶対必須だから
第11回にして今更ですね。
本当は一番最初にやっておくべきことかもしれない。

とはいえこれまでもサンプルコードでさんざん文字列をprint()してたので、改めてのおさらいです。

文字列の宣言から出力まで


これまでやった宣言方法をコードにしてみました。


実行結果

Pythonの文字列操作 基礎の基礎

おさらいになりますが
s3 = """改行で宣言するけど\
改行のない文字列"""

っていう部分は、改行を¥でエスケープしてるので、出力時に改行が無くなります。
エスケープしないと改行付きで出ます。

注目するところは、文字列にアスタリスク「*」でかけると、繰り返しの出力になるとこですね。
これは他の言語では構文エラーになるものが多いと思う。びっくり。

文字の抽出とスライス


文字列は、1つの文字の連続です。
デフォルトで配列やリストみたいになってます。
つまり・・・文字列 s が "01234" だったとして
s[0] って書くと、0番目の値を表示できます。

色々書いてみます。


結果
Pythonの文字列操作 基礎の基礎

「★インデックス指定」と書いてるところが、一般的な文字インデックスを指定した時と同じでかたをしていますが
Pythonにおいては、どうやら「文字の場所=インデックスの場所」と覚えない方が良さそうな気がします。

というのはスライスの部分で見て分かる通り、他言語の感覚を持っていると本来であれば
"8"はインデックス8
"9"はインデックス9のはずなのですが・・・

print( s2[8:10] )

としてようやく「89」と出てます。
これは、Pythonのスライスにおけるインデックスの場所というのは、文字そのものの場所ではなくて、
文字の一つ前のポインタ的な場所を指すようなのです。

具体的に示すと、文字列"ABCDE"であれば以下のピンクぽい文字の部分がPythonでいうところのインデックスぽい。



この仕様により、10までスライスして、でやっと9が表示されてるわけです。

ところでC#のとかだと、文字の場所がインデックス位置になります。

※他の言語の場合
A B C D E
0 1 2 3 4

※他の言語の場合

このPythonのスライスにおける仕様は、ちょっとうーん・・・となっている部分で、
慣れないとバグを埋め込んでしまいそうです。
特に文字列のインデックスの概念を、他言語と紐付けて覚える場合は気をつけないといけません。

ステップやマイナスのインデックス

Pythonではインデックスは正の値だけではなく、負(マイナス)インデックスもサポートしています。
「-」をつけると、後ろからどこまでという指定もできます。

また、スライスのステップも指定でき、「:::」の書式で飛び飛びでのスライスも可能です。
コードの通り、

print( s2[0:10:2] )

で、0番目から10番目までを2つ飛ばしで

print( s2[::3] )

で、開始と終了を省略して、3つ飛ばしで。

という意味になします。

奥が深い文字列操作


Pythonの文字列操作についておらさいしてみました。
デフォルトでここまでできるってことで、かなり強力そうです。

これだけじゃなく、文字列を操作する関数もなかなかすごいので、次回やっていきます。

今日はここまで!
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

テーマ:プログラミング - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/171-f40dbed5
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad