Pythonでファイル名を名前部分と拡張子に分ける

Windowsではファイル名の多くはxxxxxx.zzzのようにドットを拡張子を表現するために1つだけ使うことが多いと思います。 ところが、最近はxxxxxx.yy.zzzのように複数のドットをファイル名に含むパターンが多くなりました。 このファイル名の文字列から、名前部分と拡張子を別々に取り出してみます。

ファイル名の名前部分と拡張子はドットで区切られるのだから、splitで分ければ良いのではないかと考えるのですが、単純にドットを区切りにしてsplitすると名前部分に含まれるドットでも分割されてしまいます。

目次

  1. rsplitメソッドで文字列を分割する
  2. rsplitで分割する実施例

rsplitメソッドで文字列を分割する

splitメソッドに似たメソッドでrsplitというメソッドがあります。 これは、文字列の右側から順に区切り文字を探して分割してくれます。ですから、文字列の一番右にあるドットで2分割するように指定すれば、ファイルの名前部分と拡張子を分けて得られます。

L = S.rsplit(sep, maxsplit)
変数 内容
S ファイル名
sep 区切り文字。名前と拡張子を分割するので、ドットを指定する。
maxsplit 分割する区切り文字の数。名前と拡張子の2つに分けるので、区切り文字は1つ。
L 分割された文字列のリスト

rsplitで分割する実施例

試してみました。

>>> S = 'a.b.c.d'

>>> S.rsplit('.',0)
['a.b.c.d']

>>> S.rsplit('.',1)
['a.b.c', 'd']

>>> S.rsplit('.',2)
['a.b', 'c', 'd']

>>> S.rsplit('.',3)
['a', 'b', 'c', 'd']

maxsplitを1にしたら、名前と拡張子に分割できてますね。

広告

Pythonのファイル処理カテゴリの投稿