■ はじめに
https://dk521123.hatenablog.com/entry/2019/10/12/075251
の続き。 Python は使いやすい言語だと思うが、いけていない点がある。 今回は、その中の一部で「先頭・末尾の文字列除去」について扱う (例えば、http://xxxx/xxxxって際に「xxxx/xxxx」を抜き出したい場合など)
目次
【1】strip 1)先頭/末尾のTrim : strip() 2)先頭のTrim : lstrip() 3)末尾のTrim : rstrip() 【2】使用上の注意 別解:strip() を使わないで、先頭/末尾のTrimを行うには
【1】strip
* 基本は、strip() => ただ、後述「【2】使用上の注意」で述べるが 仕様を分かっていないと、意図しない動きになる cf strip = はぐ、むく、取り除く、服を脱ぐ
1)先頭/末尾のTrim : strip()
# 除去後の文字例 = str.strip(除去したい文字) result = "!!!Hello!!!World!!!!".strip("!") # Hello!!!World print result
2)先頭のTrim : lstrip()
# lstrip() => Left strip result = "http://localhost".lstrip("http://") # result = "http://localhost".lstrip("htp://") でも同じこと # (詳細は、以下の「使用上の注意」を参照のこと) # localhost print(result)
3)末尾のTrim : rstrip()
# rstrip() => Left strip result = "s3://your-bucket/aaa/bb/ccc/".rstrip("/") # s3://your-bucket/aaa/bb/ccc print(result)
【2】使用上の注意
* strip() の引数は、 「除去したい文字」であって「除去したい文字列」ではない
サンプル
result = "http://localhost".strip("http://") # localhos (<="t"が消えてしまう!) print(result)
※ 原因に関する補足説明
# はじめ、原因が全く分からなかった、、、 今回の場合、「h」「t」「p」「:」「/」が前後にあれば消すので 後ろ側の「t」も消してしまったことになる。
https://rcmdnk.com/blog/2016/05/09/computer-python/
https://www.headboost.jp/python-strip/
別解:strip() を使わないで、先頭/末尾のTrimを行うには
* Pythonのバージョンによって対応が異なる
Python3.9以降の場合
* 「removeprefix」「removesuffix」が使えるらしい
https://docs.python.org/ja/3.9/library/stdtypes.html#str.removeprefix
https://docs.python.org/ja/3.9/library/stdtypes.html#str.removesuffix
Python3.9未満の場合
#============================== # 先頭の文字列除去 #============================== target_str = "s3://your-bucket-name/xxx/yyyy1" result = target_str[len("s3://"):] if target_str.startswith("s3://") else target_str # your-bucket-name/xxx/yyyy1 print(result) target_str = "your-bucket-name/xxx/yyyy2" result = target_str[len("s3://"):] if target_str.startswith("s3://") else target_str # your-bucket-name/xxx/yyyy2 print(result) #============================== # 末尾の文字列除去 #============================== target_str = "http://localhost/index.html" result = target_str[0: len(target_str) - len("/index.html")] if target_str.endswith("/index.html") else target_str # http://localhost print(result) target_str = "http://localhost" result = target_str[0: len(target_str) - len("/index.html")] if target_str.endswith("/index.html") else target_str # localhost print(result)
関連記事
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251