Pythonで文字列の長さを求める方法を紹介します。
len() 関数を使う
len()
関数を使うことで、文字列の長さを求められます。
以下はそのサンプルコードです。
>>> len("abc") 3 >>> len("あいうえお") 5
まとめ
文字列の長さを求める時は、len()
関数を使いましょう。
Pythonで文字列の長さを求める方法を紹介します。
len()
関数を使うことで、文字列の長さを求められます。
以下はそのサンプルコードです。
>>> len("abc") 3 >>> len("あいうえお") 5
文字列の長さを求める時は、len()
関数を使いましょう。
Pythonで辞書をマージ(結合)する方法を紹介します。
いくつか方法があるので、それぞれ説明します。
Python 3.9以降であれば、辞書をマージするのに演算子|
が使えます。
>>> d1 = {'k1': 'v11', 'k2': 'v12'} >>> d2 = {'k2': 'v22', 'k3': 'v23'} >>> # 演算子 | を使ってマージ >>> d1 | d2 {'k1': 'v11', 'k2': 'v22', 'k3': 'v23'} >>> d2 | d1 {'k2': 'v12', 'k3': 'v23', 'k1': 'v11'}
上記の様に、キー値が異なる要素(この場合は k1
とk3
)はそのままマージされます。
また、同じキー値をもつ要素(この場合は k2
)については |
の後に書いた辞書の要素が優先されます。
なお、|
を使っても元の辞書には影響がありません。
>>> # 元の辞書はそのまま >>> d1 {'k1': 'v11', 'k2': 'v12'} >>> d2 {'k2': 'v22', 'k3': 'v23'}
元の辞書を更新したい場合は、演算子|=
を使います。
>>> # d1を上書きする >>> d1 |= d2 >>> d1 {'k1': 'v11', 'k2': 'v22', 'k3': 'v23'}
Python 3.9以降をお使いであれば、|
や|=
を使うのが良いでしょう。
辞書のアンパックを使う方法もあります。
>>> d1 = {'k1': 'v11', 'k2': 'v12'} >>> d2 = {'k2': 'v22', 'k3': 'v23'} >>> # アンパックを使ってマージ >>> {**d1, **d2} {'k1': 'v11', 'k2': 'v22', 'k3': 'v23'} >>> {**d2, **d1} {'k2': 'v12', 'k3': 'v23', 'k1': 'v11'}
しかし、この方法は、あまり直感的ではありません。
パッと見ただけでは、2つの辞書をマージしていることが分かりにくいと思います。
辞書のupdate()
メソッドを使う方法もあります。
>>> d1 = {'k1': 'v11', 'k2': 'v12'} >>> d2 = {'k2': 'v22', 'k3': 'v23'} >>> # update() メソッドを使ってマージ >>> d1.update(d2) >>> d1 {'k1': 'v11', 'k2': 'v22', 'k3': 'v23'}
しかし、update()
メソッドは元の辞書を更新してしまうため、元の辞書を変更したくない場合には使えません。
Pythonで辞書をマージする方法を紹介しました。
今回は文字列の前後から任意の文字を除去する方法を紹介します。
文字列のstrip()
メソッドを使うと、文字列の前後(先頭と末尾)から任意の文字を除去できます。
使い方は以下の通りです。
文字列.strip(除去する文字)
実際に使ってみましょう。
>>> s = '!!!こんにちは!!!' >>> s.strip('!') 'こんにちは'
「こんにちは」の前後にはそれぞれ3つずつ!
がありますが、それらが除去されたことを確認できました。
このように、文字列前後の連続する任意の文字がまとめて除去されます。
なお、このメソッドは指定した文字を除去した新しい文字列を返すため、元の文字列s
はそのままです。
>>> # 元の文字列は変更されない >>> s '!!!こんにちは!!!'
1つの文字だけでなく、複数の種類の文字の指定もできます。
たとえば!
と?
を除去したい場合は、次のようにstrip('!?')
とします。
>>> s = '!!!こんにちは???' >>> s.strip('!?') 'こんにちは'
文字列の前後にある!
と?
が除去されました。
strip()
メソッドは前後の文字を除去しましたが、先頭部分の文字のみ除去したい場合や、末尾部分の文字を除去したい場合もあります。
これにはlstrip()
メソッドやrstrip()
メソッドが使えます。
文字列の先頭部分から任意の文字を除去したい場合、lstrip()
メソッドが使えます。
これは以下のように、先頭部分から指定した文字を除去した文字列を返します。
>>> s = '!?!こんにちは?!?' >>> s.lstrip('!?') 'こんにちは?!?'
文字列の末尾部分から任意の文字を除去したい場合、rstrip()
メソッドが使えます。
これは以下のように、末尾部分から指定した文字を除去した文字列を返します。
>>> s = '!?!こんにちは?!?' >>> s.rstrip('!?') '!?!こんにちは'
なお、lstrip()
のl
はleft
(左)、rstrip()
のr
はright
(右)と考えれば覚えやすいです。
これらのメソッドに引数を指定しなかった場合は、空白文字が除去対象となります。
これについてはこちらの記事で解説しています。
strip()
メソッドを使うlstrip()
メソッドを使うrstrip()
メソッドを使う今回は文字列の前後の空白文字を除去する方法を紹介します。
文字列のstrip()
メソッドを使うと、文字列の前後(先頭と末尾)の空白文字を除去できます。
使い方は以下の通りです。
文字列.strip()
実際に使ってみましょう。
>>> s = ' こんにちは ' >>> s.strip() 'こんにちは'
「こんにちは」の前後にはそれぞれ3つずつ半角スペースがありますが、それらが除去されたことを確認できました。
このように、文字列前後の連続する空白文字がまとめて除去されます。
なお、このメソッドは空白文字を除去した新しい文字列を返すため、元の文字列s
はそのままです。
>>> # 元の文字列は変更されない >>> s ' こんにちは '
strip()
メソッドは前後の空白文字を除去しましたが、文字列の先頭部分の空白文字のみ除去したい場合や、末尾部分の空白文字を除去したい場合もあります。
これにはlstrip()
メソッドやrstrip()
メソッドが使えます。
文字列の先頭部分の空白文字のみ除去したい場合、lstrip()
メソッドが使えます。
これは以下のように、先頭部分の空白文字のみ除去した文字列を返します。
>>> s.lstrip() 'こんにちは '
文字列の末尾部分の空白文字のみ除去したい場合、rstrip()
メソッドが使えます。
これは以下のように、末尾部分の空白文字のみ除去した文字列を返します。
>>> s.rstrip() ' こんにちは'
なお、lstrip()
のl
はleft
(左)、rstrip()
のr
はright
(右)と考えれば覚えやすいです。
除去対象の空白文字は半角スペースだけではなく、改行文字やタブ文字も含まれます。
そのため、以下のようにrstrip()
メソッドで末尾の改行文字を除去できます。
>>> # 改行文字を含む文字列 >>> s2 = 'こんにちは\n' >>> s2.rstrip() 'こんにちは'
これはたとえばopen()
関数でテキストファイルを開き、for文で1行ずつ処理する場合、strip()
やrstrip()
を使って末尾の改行文字を除去するのに使えます。
with open("sample.txt") as f: for line in f: # 末尾の改行文字を除去 line = line.rstrip() ...
strip()
メソッドを使うlstrip()
メソッドを使うrstrip()
メソッドを使う今回は文字列を区切り文字で結合する方法を紹介します。
例として、以下のように,
で区切られている文字列を考えてみましょう。
a,b,c
文字列を区切り文字で結合するには、文字列のjoin()
メソッドを使います。
基本的な使い方は下記の通りです。
区切り文字.join(イテラブル)
イテラブル(iterable)とは、リストのように要素を一度に1つずつ返せるオブジェクトのことです。
結果は、各要素を区切り文字で結合した文字列になります。
実際に使ってみましょう。
>>> ",".join(["a", "b", "c"]) 'a,b,c'
今回の場合、区切り文字は,
なので、",".join(...)
としています。
結果は、各要素を区切り文字で結合した文字列 'a,b,c'
となりました。
join()メソッドのイテラブルが、文字列以外の要素を返す場合、エラーとなります。
例えば、以下のように文字列と数値が混在するリストをjoin()メソッドに渡してみましょう。
>>> "-".join(["03", 1234, "5678"]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: sequence item 1: expected str instance, int found
TypeErrorになりました。エラーメッセージにexpected str instance, int found
とあるように、文字列(str)を期待したところに数値(int)があったためです。
以下のように、リストの要素がすべて文字列であれば、期待通りに動作します。
>>> "-".join(["03", "1234", "5678"]) '03-1234-5678'
join()
メソッドを使う今回は文字列を区切り文字で分割する方法を紹介します。
例として、以下のように,
で区切られている文字列を考えてみましょう。
a,b,c
文字列を区切り文字で分割するには、文字列のsplit()
メソッドを使います。
基本的な使い方は下記の通りです。
文字列.split(区切り文字)
結果は、区切り文字で分割された文字列のリストになります。
なお、「区切り文字」は「デリミタ(delimiter)」とも呼ばれます。
実際に使ってみましょう。
>>> "a,b,c".split(",") ['a', 'b', 'c']
今回の場合、区切り文字は,
なので、split(",")
としています。
結果は、区切り文字で分割された文字列のリスト['a', 'b', 'c']
となりました。
区切り文字を指定しなかった場合、以下のように連続する空白文字がひとつの区切り文字とみなされます。
>>> "a b c d".split() ['a', 'b', 'c', 'd']
split()
メソッドを使うPythonは標準ライブラリ以外にも、数多くのサードパーティ製のパッケージがあり、PyPI(ぱいぴーあい)というリポジトリにて公開されています。
Pythonでサードパーティ製パッケージをインストールするには、pip
というツールを使います。
今回はpip
の基本的な使い方を解説しましょう。
pip
はPythonをインストールすれば同時にインストールされるので、すぐに使えます*1。
もしインストールされていない場合は、以下のようにensurepip
モジュールを使うことでpip
をインストールできます。
python -m ensurepip
なお、Debian/Ubuntuに標準でインストールされているPythonにはensurepip
モジュールが存在しません。そのため、代わりにapt
コマンドでpython3-pip
というパッケージをインストールしてください。
sudo apt install -y python3-pip
pip
はデフォルトではシステム全体で使える領域にパッケージをインストールしてしまいます。
各プロジェクト毎に必要なパッケージはそれぞれ異なるので、システム全体にインストールするのはお勧めしません。
パッケージをインストールする場合は、基本的に仮想環境を使うのがよいでしょう。
以降は、Pythonの仮想環境が有効になっていることを前提に説明します。
仮想環境について詳しくない方は、こちらの記事をご参照ください。
PyPIからパッケージをインストールするには、install
コマンドを使います。
pip install <パッケージ名>
指定した「パッケージ名」がPyPIに公開されていれば、そのパッケージがインストールされます。
試しにWebフレームワークであるDjangoをインストールしてみます。
(venv) $ pip install Django Collecting Django Downloading Django-4.1-py3-none-any.whl (8.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.1/8.1 MB 27.8 MB/s eta 0:00:00 Collecting sqlparse>=0.2.2 Downloading sqlparse-0.4.2-py3-none-any.whl (42 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.3/42.3 kB 52.8 MB/s eta 0:00:00 Collecting asgiref<4,>=3.5.2 Downloading asgiref-3.5.2-py3-none-any.whl (22 kB) Installing collected packages: sqlparse, asgiref, Django Successfully installed Django-4.1 asgiref-3.5.2 sqlparse-0.4.2
この記事を執筆した時点で最新のDjango 4.1がインストールされました。また、依存パッケージがあれば合わせてインストールされます。
install
コマンドは、デフォルトではそのパッケージの最新版をインストールします。
しかし、バージョンを指定したいこともあるでしょう。その場合は、以下のようにバージョンを指定してインストールできます。
pip install <パッケージ名>==<バージョン>
試しにDjango 4.0をインストールしてみます。
(venv) $ pip install Django==4.0 Collecting Django==4.0 Using cached Django-4.0-py3-none-any.whl (8.0 MB) Requirement already satisfied: sqlparse>=0.2.2 in ./venv/lib/python3.10/site-packages (from Django==4.0) (0.4.2) Requirement already satisfied: asgiref<4,>=3.4.1 in ./venv/lib/python3.10/site-packages (from Django==4.0) (3.5.2) Installing collected packages: Django Attempting uninstall: Django Found existing installation: Django 4.1 Uninstalling Django-4.1: Successfully uninstalled Django-4.1 Successfully installed Django-4.0
Djangoのバージョンが4.0にダウングレードされました。
インストールしたパッケージを確認するには、list
コマンドを使います。
pip list
現在インストールされているパッケージを確認してみましょう。
(venv) $ pip list $ pip list Package Version ---------- ------- asgiref 3.5.2 Django 4.0 pip 22.2.2 setuptools 65.0.2 sqlparse 0.4.2
インストールしたパッケージと、それぞれのバージョンが表示されました。
先ほどインストールしたDjango 4.0が確認できます。
なお、asgiref
とsqlparse
はDjango
の依存パッケージです。また、pip
とsetuptools
はデフォルトでインストールされています。
開発を続けていると、パッケージ側のバージョンが上がり、プロジェクトで使用しているパッケージが古くなることがあります。
どのパッケージが古くなっているかを確認したい場合は、以下のコマンドを使います(もしくは pip list --outdated
)。
pip list -o
実際に使ってみましょう。
(venv) $ pip list -o Package Version Latest Type ------- ------- ------ ----- Django 4.0 4.1 wheel
先ほどDjangoを4.0にダウングレードしたので、最新版(Latest)であるDjango 4.1の存在が確認できます。
インストール済みのパッケージを最新バージョンにするには以下のコマンドです(もしくは pip install --upgrade <パッケージ名>
)。
pip install -U <パッケージ名>
ダウングレードしたDjangoを再び最新バージョンにしてみましょう。
(venv) $ pip install -U Django Requirement already satisfied: Django in ./venv/lib/python3.10/site-packages (4.0) Collecting Django Using cached Django-4.1-py3-none-any.whl (8.1 MB) Requirement already satisfied: sqlparse>=0.2.2 in ./venv/lib/python3.10/site-packages (from Django) (0.4.2) Requirement already satisfied: asgiref<4,>=3.5.2 in ./venv/lib/python3.10/site-packages (from Django) (3.5.2) Installing collected packages: Django Attempting uninstall: Django Found existing installation: Django 4.0 Uninstalling Django-4.0: Successfully uninstalled Django-4.0 Successfully installed Django-4.1
執筆時点での最新バージョン(4.1)に更新されました。
以下のコマンドで、現在インストールしているパッケージを、インストール可能なフォーマットで出力できます。
pip freeze
実際に使ってみましょう。
(venv) $ pip freeze asgiref==3.5.2 Django==4.1 sqlparse==0.4.2
インストール済みのパッケージとバージョンが、インストール可能な形式で一覧表示されました。
これを保存して共有すれば、複数の環境間でパッケージのインストール状態を統一するのに便利です。
保存するファイル名は任意ですが、「requirements.txt」という名前がよく使われます。
(vevn) $ pip freeze > requirements.txt
保存した「requirements.txt」を使って、一括でパッケージをインストールするには以下のようにします。
(vevn) $ pip install -r requirements.txt
最後にパッケージをアンインストールする方法です。以下のコマンドでパッケージをアンインストールできます。
pip uninstall <パッケージ名>
Djangoをアンインストールしてみます。途中でアンインストールするか確認されるので、「Y」を入力すればアンインストールできます。
(venv) $ pip uninstall Django Found existing installation: Django 4.1 Uninstalling Django-4.1: Would remove: /Users/test/blog/venv/bin/django-admin /Users/test/blog/venv/lib/python3.10/site-packages/Django-4.1.dist-info/* /Users/test/blog/venv/lib/python3.10/site-packages/django/* Proceed (Y/n)? Y Successfully uninstalled Django-4.1
Djangoがアンインストールされました。
ただし、以下の通りDjangoインストール時に合わせてインストールされた依存パッケージはアンインストールされていないので、注意しましょう。
(venv) $ pip list Package Version ---------- ------- asgiref 3.5.2 pip 22.2.2 setuptools 65.0.2 sqlparse 0.4.2
pip
には他にも機能がありますが、よく使う基本的なコマンドを紹介しました。
最後に今回紹介したコマンドをまとめます。
# パッケージのインストール pip install <パッケージ名> # バージョンを指定してパッケージのインストール pip install <パッケージ名>==<バージョン> # パッケージのバージョンアップ pip install -U <パッケージ名> # パッケージのアンインストール pip uninstall <パッケージ名> # インストール済みのパッケージの確認 pip list # 古いパッケージの確認 pip list -o # インストール済みのパッケージをrequirements.txtに保存 pip freeze > requirements.txt # requirements.txtを使ってパッケージをインストール pip install -r requirements.txt