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

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

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

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

正規表現

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

Python

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

Q&A

解決済

3回答

1445閲覧

Pythonの正規表現でstringの一部を抽出したいのですが?

Hiroumi

総合スコア7

Python 3.x

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

正規表現

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

Python

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

0グッド

0クリップ

投稿2015/10/11 13:32

Pythonの正規表現を利用して、下記のような英語の映画の台本から台詞の部分を抽出したいのですが、どうも上手くいきません。

NICK FURY Until such time as the world ends, we will act as though it intends to spin on. Clear out the tech below. Every piece of PHASE 2 on a truck and gone. NICK FURY We've prepared for this, doctor. Harnessing energy from space.

台詞の部分を行数が決まっていないというのを前提で抽出したいのですが、どなたかご存知でしょうか。まだまだ未熟なため、漠然と正規表現を使った方がいいのではと思い使っているのですが、よりいい方法があれば正規表現でなくでも構わないです。よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

自己解決

一応の解決策を見つけたので投稿しますが、どの台詞も\n\nで終わるようなので、台詞が1行の場合は、(.)\n\n、2行の場合は、(.)\n(.*)\n\nで、順番に分析していけば各行数ごとに分析できました。(他にもまだまだ問題点はありますが…)

どうしてもstringとして抽出することができないので、また他の機会にこの点について質問させていただくと思います。

ご回答頂いた皆さん、ありがとうございました!

投稿2015/10/11 16:07

編集2015/10/11 16:10
Hiroumi

総合スコア7

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

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

0

正規表現、勉強中です。

正規表現を調べるために下記のサイトが使えます。
Pythex

私は少しトライしてみたのですが、どうもうまくいきませんでした。
確かにこういう場合、正規表現で一発で取得できたら気持ちいですよね。

追記
正規表現でsplitができるみたいなので、できそうです。

python

1text = """ 2 NICK FURY 3 Until such time as the world ends, we 4 will act as though it intends to spin 5 on. Clear out the tech below. Every 6 piece of PHASE 2 on a truck and gone. 7 8 NICK FURY 9 We've prepared for this, doctor. 10 Harnessing energy from space. 11""" 12serif = re.split("[A-Z]+ [A-Z]+ \n", text) 13 14for s in serif: 15 print s 16 17 18#実行結果 19""" 20 21 Until such time as the world ends, we 22 will act as though it intends to spin 23 on. Clear out the tech below. Every 24 piece of PHASE 2 on a truck and gone. 25 26 27 We've prepared for this, doctor. 28 Harnessing energy from space. 29 30"""

投稿2015/10/11 15:46

編集2015/10/11 16:47
K_S_

総合スコア419

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

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

Hiroumi

2015/10/11 15:55

ご回答ありがとうございます!私も Debuggex などの正規表現のオンラインツールを利用して勉強を進めています。なかなか難しいですね…
K_S_

2015/10/11 16:48

空白行が含まれているので少し変更が必要です。
guest

0

Until such time as the world ends, we
will act as though it intends to spin
on. Clear out the tech below. Every
piece of PHASE 2 on a truck and gone.

We've prepared for this, doctor.
Harnessing energy from space.

台詞の部分は上記2箇所でよろしいでしょうか?
この部分でしたら1行ずつ読み込み、小文字を含む行を抽出すればよいと思います。
他にパターンがありましたら別途考えましょう。

投稿2015/10/11 14:20

shiena

総合スコア1825

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

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

Hiroumi

2015/10/11 14:31

ご回答ありがとうございます。実は、台本を丸々分析してコーパスを作成しようと考えていまして、まだまだ、色々なパターンがあります… 条件を絞れば一部だけ抽出することは可能なのですが、より多くのデータを得るために、最善の方法を模索しています。行数ごとに抽出すれば、もしかしたら、上手くいくかもしれないのでこれから試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問