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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2617閲覧

リスト内包で、正規表現の後方参照を使うのは可能でしょうか?

zanjibar

総合スコア206

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/03/21 03:00

python のリスト内包についての質問です。

ls -l の出力結果に
このような文字列があったときに、最後の 625 を抽出し、リスト化したいのですが、正規表現の後方参照は使えるでしょうか?

4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 625

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

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

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

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

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

guest

回答2

0

ベストアンサー

後方参照をどう使うのかわかりません。
こういうことではないのですか?

Python

1import re 2 3src = [ 4 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 625", 5 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 100", 6 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 200", 7 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 300", 8 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 400" 9] 10 11dst = [re.search(r"\d+$", x).group(0) for x in src] 12print(dst)

投稿2017/03/21 03:25

Zuishin

総合スコア28660

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

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

zanjibar

2017/03/21 03:54

ばっちりです。ありがとうございました。
zanjibar

2017/03/21 03:57

ちょっとコード変更しました。これでいろいろ操作できて便利です。 import re src = [ "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 625", "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 100", "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 200", "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 300", "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 400" ] r1 = re.compile('.* (\d+$)') dst = [r1.search(x).group(1) for x in src] print(dst)
Zuishin

2017/03/21 04:16

その正規表現でうまくいきますか? [5, 0, 0, 0, 0] になりませんか?
Zuishin

2017/03/21 04:19

失礼しました。.* の後にスペースがありましたね。
guest

0

求められていない解法ですが、文字列のフォーマットが決まってる(スペース区切りで最後の文字列が取得できれば良い)なら、正規表現を使わなくとも同じような事ができると思いました。 既に解決済みですが、参考までに。

python

1src = [ 2 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 625", 3 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 100", 4 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 200", 5 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 300", 6 "4 drwxrwxrwx 5 www-data adm 4096 Aug 9 2013 400" 7] 8 9dst = [x.split(' ')[-1] for x in src] 10print(dst)

投稿2017/03/21 04:03

tell_k

総合スコア2120

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

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

zanjibar

2017/03/21 04:09

ls -l なので、対象にならない行もあるので、正規表現がよいかなというところです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問