LoginSignup
2
3

pythonの基本的な「文字列操作」の文法で暗記したいこと

Last updated at Posted at 2020-11-23

(自分メモ)pythonの基本的な文法で暗記したいこと

はじめに

自分がpthonの基本を忘れないように、自分向けに書く。
※このページを見て頂いた方すみません。完全な初心者向けではありません。
 また、よく知っている人向けに、特別なことは書いていません。


コメントアウト

すべての言語で、最初に覚えなければならないのは「コメントアウト」ですね。

python0.py
#コメントアウト

他の記載方法もあるようですが、#だけ覚えれば十分


シーケンス

次はシーケンス。これは簡単。箱のイメージです。
・右から、取得するときは、正数。
・左から、取得するときは、負数。
になる。

num 0 1 2 3 4 5
左から 0 1 2 3 4 5
右から -6 -5 -4 -3 -2 -1

※一番左が0。一番右が-1であることがポイントです。

python1.py
num="012345"

#左から「2番目」を取得 ※左から見たとき、一番左は「0番」
a1=num[1]
# '1'

#一番「右」を取得 ※右から見たとき、一番右は「-1番」
a2=num[-1]
# '5'

#「右」から「6番目」を取得
a3=num[-6]
# '0'

スライス(基本1)[start:stop]

スライス(変数の後ろの [])はpython独自(?)の使い方ができる。
しかもみんな結構使っている。(PG文書の省略に役立つ)
ただpython初心者(他PG経験者)には、配列にしか見えないので解読を難解にする。
これより先に関数を覚えても、スライスでつまずく。

次のような書き方ができる。
・変数 [start:stop]

python2.py
num="012345"

#「3番目~」を取得 <「:」と「~」の関係に注目
a1=num[3:]
# '345'

#「~3番目」を取得
a2=num[:3]
# '012'

#「3番目~5番目」を取得
a3=num[3:5]
# '34'

・・・って、ちょっと待って!。なんで'345'じゃないの?
それは、順番の数え方が次の通りだから。。。

num 0 1 2 3 4 5
start 0 1 2 3
stop 0 1 2 3 4 5 6

なので、次の通りになる

python2-1.py
num="012345"

a3_1=num[3:4]
# '3'

a3_2=num[3:3]
# ''

スライス(基本1.5)[start:stop]逆数

マイナスを使うと、左からカウントしてくれる。
ExcelのRight関数のような感じですね。
そして、±を組み合わせると、文字列の中間地点などを取得することもできる。
+とマイナスの判断位置は表にすると次の通りである。

num 0 1 2 3 4 5
右から 0 1 2 3 4 5 6
左から -6 -5 -4 -3 -2 -1
python2-2.py
num="012345"

# 後ろの2つ[だけ]欲しい
a1=num[-2:]
# '45'

# 後ろの3つ[だけ]欲しいが、最後の1つは不要
a2=num[-3:-1]
# '34'

# 前1つ不要。後ろ1つ不要
a3=num[2:-2]
# '234'

# 後ろから5つ、前から5つの交差する範囲が欲しい <需要ある?
a3=num[-5:5]
# '1234'

スライス(基本2)[start:stop:step]

stopの後ろに、 step という項目を追加することで、面白いことができます。

・変数 [start:stop:step]

python2-3.py
#「2個飛ばし」で取得 ※0から始まるので、たまたま偶数になった

num="0123456789"

a1=num[::2]
# '024'

#「逆順(後ろから順番)」に表示
a2=num[::-1]
# '543210'

スライス(応用)

python3.py
#あえてスライスを記入して、元と同じように表示するに次の通り(デフォルト値?)
num="0123456789"

a1=num[0::1] #a
# '0123456789'

#組み合わせても使える
#「逆順」にして「2個飛ばし」で取得。「逆順」にする。
a2=num[::-1][::2][::-1]
# '13579'
##987654321 → 97531 → 13579 と変化している

#リスト型でも使える。「2個飛ばし」で取得
numl=[0,1,2,3,4,5,6,7,8,9]
n1=numl[::2]
# [0, 2, 4, 6, 8]

参考
スライスについて、細かく知りたい方はこちらが良いかと思います。
https://qiita.com/tanuk1647/items/276d2be36f5abb8ea52e


文字列検索・置換・比較

よくある感じ。簡単です。

python4.py
num="0123456789"

#表示位置を取得する
foo=num.find("1")
# 1

#検索して指定した文字へ変換する
foo=num.replace("1","a")
# '0a23456789'

abc1="abc"
abc2="abc"

#単純比較は演算子で簡単
abc1==abc2
# True

#部分比較
"bc" in abc1
# True

「文字列⇒リスト」・「リスト⇒文字列変換」

区切り文字が「空白」というのがポイント

python5.py
abc='a b c d e f'
#文字列⇒リストへ変換する。 ※空白区切り
abcl = abc.split()
# ['a','b','c','d','e','f']

#リスト(文字)⇒文字列に変換する ※空白区切り
a1=" ".join(abcl)
# 'a,b,c,d,e,f'

numl=[0,1,2,3,4,5,6,7,8,9]
#リスト(数字)⇒文字列に変換する ※空白区切り <mapで事前にstr型にするのがポイント
n1=" ".join(map(str,numl))
# '0 1 2 3 4 5 6 7 8 9'

join splitについて詳しくはこちら
https://techacademy.jp/magazine/28688
https://note.nkmk.me/python-split-rsplit-splitlines-re/
https://hydrocul.github.io/wiki/programming_languages_diff/string/join.html


文字を結合・余分な空白を消す

これも覚えれば簡単

python6.py
st="hello"
ed=" world"

#2つの文字を結合
l1=st+ed
# 'hello world'

#余分な空白を消す
ed.strip()
# 'world'
2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3