質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

1087閲覧

Python:正規表現を使ってファイル名をこんな感じで変更してみたい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/10/03 00:37

溜まりにたまった音楽ファイルを個人的な都合で以下のルールでリネームしたいと考えています.

「01. AAAAAA.mp3」 ⇒ 「AAAAAA.mp3」 「02.あああああ.mp3」 ⇒ 「あああああ.mp3」 「03 - aあaあa.mp3」 ⇒ 「aあaあa.mp3」 「04 ~ 11111.mp3」 ⇒ 「11111.mp3」

※今回は例に示すためだけにとりあえずこう変換したいなというものをまとめて羅列しています.
※例えば上記の4ファイルを対象にするとして全部⇒通りになるコード作成を目標としています

要するに様々な様式のファイル名の先頭のトラック番号削除を,Pythonの正規表現で実装したいなというわけです.

個人的なアプローチとして,例えば文字列中の最初のローマ字及び日本語までを削除で実装できるかなあ,と考えているのですが「04 ~ 11111.mp3」 ⇒ 「11111.mp3」迄も考える場合はどうしようと悩んだので質問に至りました.

よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

正規表現の部分だけですが、、、

Python

1res = re.sub(r'^\d+[.\s\-~]+(.+)$', '\1', line) 2

こんな感じでどうでしょうか?

意味としては、行頭に「1個以上の数字」+「ドット、空白、-、~」が1個以上、
「それ以降の行末まで」(ここはキャプチャーする)。
置き換え後のテキストはキャプチャーした部分です。

「ドット、空白、-、~」以外にも記号があるならここに追加します。

ちなみに、ペースターというツールで変換すると以下のようになります。
正規表現のテスト | [@ s/^\d+[.\s-~]+(.+)$/\1/gm]

text

101. AAAAAA.mp3 202.あああああ.mp3 303 - aあaあa.mp3 404 ~ 11111.mp3 5 67 8AAAAAA.mp3 9あああああ.mp3 10aあaあa.mp3 1111111.mp3 12

投稿2020/10/03 01:19

autumn_nsn

総合スコア335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

^\d+ ?[.~-] ?(.+)$で、最初のグループだけを取り出すか、
^\d+ ?[.~-] ?にマッチした部分を削除すればいいのでは。

投稿2020/10/03 01:13

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問