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

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

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

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

Q&A

解決済

2回答

265閲覧

python3 正規表現の検索と抜き出し

Untitled_Sample

総合スコア192

Python 3.x

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

0グッド

0クリップ

投稿2018/02/16 01:13

l配列のデータから、拡張子とファイル名を抜き出す事は可能でしょうか?
どの様なキーワドが適切か教えて下さい

python

1l=[['/home/usa/デスクトップ/python/nihuramu/nene01.py', 2'/home/usa/デスクトップ/python/nihuramu/kou01.py', 3'/home/usa/デスクトップ/python/nihuramu/kou02.py', 4'/home/usa/デスクトップ/python/nihuramu/aoba02.py']] 5 6 7#現状 8l2=[] 9r2=[] 10lr=[] 11[r.append([i2]) for i in l for i2 in i] 12[l2.append(i2.split('/')) for i in r for i2 in i] 13[r2.append(i[-1]) for i in l2] 14[lr.append(i.split('.')) for i in r2] 15 16print(lr) 17""" 18[['nene01', 'py'], ['kou01', 'py'], ['kou02', 'py'], ['aoba02', 'py']] 19""" 20

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

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

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

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

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

guest

回答2

0

既に存在するものを使うのが一番です。
Python3.4以降ならば、だいたいのファイル操作はpathlibで片付きます。

Python

1from pathlib import Path 2 3l = [[ 4 '/home/usa/デスクトップ/python/nihuramu/nene01.py', 5 '/home/usa/デスクトップ/python/nihuramu/kou01.py', 6 '/home/usa/デスクトップ/python/nihuramu/kou02.py', 7 '/home/usa/デスクトップ/python/nihuramu/aoba02.py' 8]] 9 10files = [Path(f) for f in l[0]] 11files = [ 12 [f.stem, f.suffix[1:]] for f in files 13] 14 15print(*files, sep='\n')

実行結果 Wandbox

Python

1['nene01', 'py'] 2['kou01', 'py'] 3['kou02', 'py'] 4['aoba02', 'py']

投稿2018/02/16 05:28

編集2018/02/16 17:34
LouiS0616

総合スコア35660

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

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

0

ベストアンサー

手元に Python 3 がなく、 Python 2.7 になりますが、
Python 3 でも、以下のコードで使っている正規表現で
取れると思います。

teratail$ python -V

Python 2.7.10
teratail$ cat q113731.py

python

1# -*- coding: utf-8 -*- 2 3import re 4 5pattern = r"/.*/([a-z0-9_]+).([a-z0-9_]+)$" 6 7l = [[ 8 '/home/usa/デスクトップ/python/nihuramu/nene01.py', 9 '/home/usa/デスクトップ/python/nihuramu/kou01.py', 10 '/home/usa/デスクトップ/python/nihuramu/kou02.py', 11 '/home/usa/デスクトップ/python/nihuramu/aoba02.py']] 12 13results = [] 14 15for path in l[0]: 16 m = re.match(pattern, path) 17 if m: 18 results.append([m.group(1), m.group(2)]) 19 20print(results)

teratail$ **python q113731.py **

[['nene01', 'py'], ['kou01', 'py'], ['kou02', 'py'], ['aoba02', 'py']]
teratail$

以上参考になれば幸いです。

投稿2018/02/16 01:38

編集2018/02/16 01:40
jun68ykt

総合スコア9058

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問