「」で囲まれたセリフや、地の文の続く、いわゆる小説のような文章が書かれたテキストデータから、セリフの部分だけを残して地の文を削除したい、という場合、どういった方法がいいか教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/02/27 08:34:21
  • 終了:2008/02/28 00:48:56

ベストアンサー

id:hayate_007 No.2

hayate_007回答回数89ベストアンサー獲得回数32008/02/27 10:15:11

ポイント40pt

正規表現での置換が可能なテキストエディタで


「」に囲まれた部分以外をて空白(削除)とすればセリフだけが残ります.


下記のはテキストエディタではないですか置換前の確認が可能で誤りにくいので

普段正規表現を使わないようであれば使いやすいです


http://www.vector.co.jp/magazine/softnews/030308/n0303083.html


この例で言えば


検索条件を  」.*?「 として置換を条件を 空白(削除するので)

「」はセリフ以外で使われていないという条件なので例外があればあらかじめ検索で要確認.


あとは手動で文頭と文末のセリフ以外の部分を削除すれば1ファイル数分で終わります.

他にもっとスマートな条件があるかもしれませんがファイル数が少ないのであれば考える

より行動したほうが時間はかかりませんので自分はこうしています.

id:rinta666

正規表現ですか。これは便利ですね。

上記方法では、同じ行内にあるカギカッコ間の地の文にしか効果がなかったのですが、一旦改行を置換ですべて消して、それから上記正規表現を実行して、再びカギカッコ綴じの後ろに置換で改行を置くと、ほぼ完璧にセリフ部分だけ残すことができました。

回答どうもありがとうございました。

2008/02/28 00:44:11

その他の回答(1件)

id:hrkt0115311 No.1

どんジレ、どんさん回答回数892ベストアンサー獲得回数512008/02/27 10:08:35

ポイント30pt

こんにちは。


試しにやってみました。

「出かしたぞ」

「善し!」

「既に、我と彼との別、是と非との分を知らぬ。眼は耳のごとく、耳は鼻のごとく、鼻は口のごとく思われる。」

「ああ、夫子(ふうし)が、――古今無双(ここんむそう)の射の名人たる夫子が、弓を忘れ果てられたとや? ああ、弓という名も、その使い途(みち)も!」

http://www.aozora.gr.jp/cards/000119/files/621_14498.html

青空文庫の上記データを整形しました。


「」に囲まれた文章が4件しかなかったので、簡単な正規表現+手作業で調整しました。

Windows環境で、テキストエディタは秀丸を利用しています。

① 」 を 」\n に置き換えする。 ※」の終わりが必ず改行されていることになります。

② 「 を検索する ※ 検索することで「 がマーカーされます

③ マーカーされた「を頼りに、目視で地の文を削除。


番外編

情報量が多く、「」内の文章の順番が並び替えられてしまってもいい場合は、マクロなどを使い、①の後でソートをかけると、簡単に「」つきの文章と、地の文を区別することができます。今回は、セリフの順番も重視されると考え、上記方法を提案させていただきました。


参考になれば幸いです。

id:rinta666

カギカッコの頭だけをマークして区別しやすくして、手作業で削除していくやり方でしょうか。

たしかに、セリフそのものが少ない場合には、そちらの方が機械的作業のトラブルもなさそうで良いのかもしれませんね。

ただ、逆に量が多すぎる場合には、別の方法が必要かもしれませんね。

回答していただきありがとうございます。

2008/02/28 00:39:58
id:hayate_007 No.2

hayate_007回答回数89ベストアンサー獲得回数32008/02/27 10:15:11ここでベストアンサー

ポイント40pt

正規表現での置換が可能なテキストエディタで


「」に囲まれた部分以外をて空白(削除)とすればセリフだけが残ります.


下記のはテキストエディタではないですか置換前の確認が可能で誤りにくいので

普段正規表現を使わないようであれば使いやすいです


http://www.vector.co.jp/magazine/softnews/030308/n0303083.html


この例で言えば


検索条件を  」.*?「 として置換を条件を 空白(削除するので)

「」はセリフ以外で使われていないという条件なので例外があればあらかじめ検索で要確認.


あとは手動で文頭と文末のセリフ以外の部分を削除すれば1ファイル数分で終わります.

他にもっとスマートな条件があるかもしれませんがファイル数が少ないのであれば考える

より行動したほうが時間はかかりませんので自分はこうしています.

id:rinta666

正規表現ですか。これは便利ですね。

上記方法では、同じ行内にあるカギカッコ間の地の文にしか効果がなかったのですが、一旦改行を置換ですべて消して、それから上記正規表現を実行して、再びカギカッコ綴じの後ろに置換で改行を置くと、ほぼ完璧にセリフ部分だけ残すことができました。

回答どうもありがとうございました。

2008/02/28 00:44:11
  • id:hrkt0115311
    どんジレ、どんさん 2008/02/27 10:10:05
    こんにちは。追記です。
    「」内に改行が含まれてしまっている情報だと、処理するのが少し難しくなるかもしれません。
  • id:hayate_007
    補足です

    秀丸を使った置換は確か標準では同一行内が対象なのでこの方法でやるとなると改行をどうにかしなければな
    りませんが紹介したソフトは対象を同一行内でも同一行外でも設定で変更できるので便利です.
    テキストエディタは同一行内でしか行えないのがほとんどです.
    ※ここでいう改行はテキストエディタが勝手にしたりする「折り返し」ではなく「CR+LF」です.

    どうしても同一行内しか対象にできないテキストエディタを使いたいのであれば

    検索「¥n」→置換「xxxxxxxxxxxxxxx」みたいに一時的に別な語句に置き換えておいて

    セリフ以外の部分を削除した後で

    検索「xxxxxxxxxxxxxxx」→「¥n」
    ※「¥n」は実際は小文字です.

    のようにして戻すと文章がくずれないので手間が少ないですよ.

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません