[リストへもどる]
一括表示
タイトル小学館故事ことわざ辞典のEPWING化について
記事No36
投稿日: 2008/03/20(Thu) 20:41:05
投稿者tree
小学館故事ことわざ辞典のEPWING化にチャレンジしています。
ActivePerl5.8で、次のようなところまでできました。

 <dt>合愛奇愛【合愛あいあい奇愛きあい】</dt>
 <dd>⇒愛縁(あいえん)奇縁</dd>

質問が二つあるのですが、どなたか教えていただけないでしょうか。
いくつもソフトを少しずつ使えば何とかなるのですが、今後のためにテクニックと知識をつけたいと考えて質問しました。

質問1
 【合愛あいあい奇愛きあい】の漢字の部分を削ろうと
  s/[亜-K]//g;
 としたら文字化けをします。
 秀丸エディタの置換機能を使えばうまく変換できました。表計算と組み合わせて使います。
 perlでは無理なのでしょうか。また、エディタ以外によいソフトがないでしょうか。

質問2
 ⇒愛縁(あいえん)奇縁
 参照項目へジャンプ用のタグをつけようと考えています。
 ⇒のところのタグはすぐにつきますが、ジャンプ先のタグは単純な方法が思い浮かびません。今、思いつくことは次の二つです。他のよい方法がないでしょうか。
(a)表計算を使えば何とかなると考えています。
(b)一度textファイルを作って、つぎにtextファイルの⇒を見つけ、見つけるたびにファイル全体に検索をかけ置換するループを組む。(複雑そうでつくる自信が今はないです。)

タイトルRe: 小学館故事ことわざ辞典のEPWING化について
記事No37
投稿日: 2008/03/21(Fri) 08:44:07
投稿者tree
ここでお尋ねするのは趣旨違いかなと考えながら、重ねて具体的に書くと以下の事を行っています。
1、2行の#を外すとエラーになります。
 もしかしたらこのスクリプトのコードがあっていないような気がしてきました。
#httphttp$kana =~s/[亜-K]//g;の#を外すと文字化けします。

kotowaza.txt-------------------------------------------------------------
**********
合愛(あいあい)奇愛(きあい)

⇒愛縁(あいえん)奇縁

Koji Kotowaza Proverb Dictionary, ゥ Shogakukan 1986/故事ことわざの辞典 ゥ小学館 1986.
kotowaza_bb.pl-------------------------------------------------------------
#use Encode qw/ encode decode /;
#use encoding "euc-jp";
$flg = 1;
while(<>){
httpif(/\*\*\*/){
httphttp$flg = 0;
httphttpprint "\n";http}
httpelsif(/^Koji Kotowaza Proverb Dictionary/){
httphttpprint "<\/dd>\n\n";http}
httpelsif($flg == 0){
httphttpchomp;
httphttp$kana = $_;
httphttp$kanji = $_;
httphttp$kanji =~s/\(.*?\)//g;
httphttp$kana =~s/[\(-\)]//g;
#httphttp$kana =~s/[亜-K]//g;
httphttpprint "<dt>$kanji";
httphttpprint "【$kana】<\/dt>\n<dd>";
httphttp$flg = 1;http}
httpelse{
httphttp$flg++;
httphttpchop;
httphttpprint $_;http}
}
# perl kotowaza_bb.pl kotowaza.txt > kotowaza_bb.txt
# ↑をコマンドプロンプトで実行します。
kotowaza_bb.txt--------------------------------------------------------
<dt>合愛奇愛【合愛あいあい奇愛きあい】</dt>
<dd>⇒愛縁(あいえん)奇縁</dd>

タイトルRe: 小学館故事ことわざ辞典のEPWING化について
記事No38
投稿日: 2008/03/21(Fri) 10:29:55
投稿者nopty
>スクリプトのコードがあっていないような気が
以下の説明は、スクリプト、kotowaza.txt ともに、シフトJISだと仮定しています。

質問1 漢字を削る
→ s/\p{Han}//g;
で出来ますが、これを使うためには 文字コードをきちんと指定する必要があります。
use encodeing 'cp932';
open IN, '<:encoding(cp932)', 'kotowaza.txt';
がおまじないです。


質問2 ジャンプ先のタグ
→ 気にせずに、全ての項目にタグを付けてしまってはどうでしょう?
  重複するかもしれませんが。下の例参照。


use encoding 'cp932';
$flg = 1;
open IN, '<:encoding(cp932)', 'kotowaza.txt';

while(<IN>){
(中略)
    $kana =~s/\p{Han}//g;  #← 漢字を削る
    # $kana =~s/[亜-K]//g;
(中略)
    print "<dt id=\"$kanji\">$kanji"; #← タグをつける

タイトルRe: 小学館故事ことわざ辞典のEPWING化について
記事No41
投稿日: 2008/03/21(Fri) 18:45:18
投稿者tree
nopty さん レス、感謝します。
やはり、おまじないがあるのですね。ありがとうございます。

漢字の削除について
 二日ほど忙しく、あまり試すことができないですが、
 とりあえず、試してみました。エラーは出なくなりました。ただ【】内がからになってしまいました。
 もう少し探求してみます。
 コードはシフトJISのようです。曖昧ですが、秀丸にはそう表示されていました。

質問2についてはまだ試していません。しかし、その方法があったかと驚きました。
 例参照をつけていただきましたので大変参考になり、何とかなりそうに考えています。

タイトルRe: 小学館故事ことわざ辞典のEPWING化について
記事No43
投稿日: 2008/03/22(Sat) 00:54:43
投稿者上田さん
>【】内がからになってしまいました。

$kana と 】 を区別できるように、例えば、以下のどれかのようにして下さい。
(また、print " " の中で、/ は \ でエスケープしなくて良い)

print "【${kana}】</dt>\n<dd>";
print "【$kana", "】</dt>\n<dd>";
print "【", $kana, "】</dt>\n<dd>";

タイトルRe: 小学館故事ことわざ辞典のEPWING化について
記事No45
投稿日: 2008/03/23(Sun) 12:45:18
投稿者tree
上田さん ありがとうございました。
うまくいきました。
下のものを使いました。
> print "【", $kana, "】</dt>\n<dd>";

はじめは上記のようにしていたのですが、
試しているうちに、これでもいけると省きすぎました。
大変不思議なものです。
noptyさんにも改めて感謝します。ありがとうございました。
後は、参照にチャレンジします。

タイトルRe: 小学館故事ことわざ辞典のEPWING化について
記事No47
投稿日: 2008/03/23(Sun) 17:46:07
投稿者tree
noptyさん ありがとうございます。
参照へのジャンプうまくいきました。
漢字でもOKなんですね。