• 締切済み

複数文字列の一括置換?

置換とは少々違うのかもしれませんが… ファイルA: あいうえお title1 かきくけこ title2 さしすせそ title3 たちつてと title4 ファイルB: 1 アイウエオ 2 カキクケコ 4 タチツテト ファイルC: あいうえお アイウエオ かきくけこ カキクケコ さしすせそ title3 たちつてと タチツテト * ファイルは全てテキスト形式です。 Aのテキストを、Bを使ってCのように一気に変換したいのですが、何か良い方法は無いでしょうか? (変換する内容がBに無い場合もありえますので、その場合の処理も指定したいです。) 手軽に行える方法(ソフト?)等があると助かります。 ちなみに今は、 ・Aのテキストのtitle部分を削除する ・Tab区切りに変える ・エクセルに貼り付ける ・vlookup関数で変換 とやっていますが、ファイル数が多く大変です。 実際はAの内容はもっと複雑で、vlookupが使えるように無理矢理Tab区切りにしているので、変換後にもとの形に戻すのが難しいです;;

noname#251034
noname#251034

みんなの回答

noname#52504
noname#52504
回答No.3

下記のフリーソフト『Repl-Ace』には「置換計画」という機能があって、 検索語と置換語のタブ区切テキストをインポートして、 複数パターンの置換処理を連続して行うことができます。 ご質問のケースですと、 まず、ファイルBをExcel等で整形して title1 アイウエオ title2 カキクケコ title4 タチツテト というようなタブ区切テキストファイルを作り、 『Repl-Ace』にインポート、ファイルAについて置換、 という流れになります。 ※特定のファイルを指定しての処理も可能ですが、  選択したフォルダ内の全ファイルについて一括処理することを既定にした作りなので、  対象外のファイルを含むフォルダに不用意な処理をすると  深刻な結果をもたらす可能性があります。ご注意ください。 Repl-Ace Documents (Ver.4.2.2.0) http://www.vector.co.jp/vpack/browse/pickup/pw6/pw006046.html

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1のお礼・補足を読むと、質問文章を読んで回答すると見当はずれの回答になりますね。質問表現はしっかりしてくださいよ。 質問のように、 Aファイの列とBファイルの列との同じ行が、置換前ー>置換後の関係にあるならと思いましたが、そうでなく、あくまで質問者のイメージであって、実際のAファイルの言葉・文章は、文章の中に不定位置に「散りばめられている」ようですね。 ーー そうであれば、全文から逐一Aファイルの言葉を捜し、Aファイルの言葉からBファイルの言葉を探して、変更後をBファイルから探して見つけ、置き換えるという作業を延々と繰り返すより他ない。 VBA・VBでも上級のプログラム力がいると思います。どちらかといえば エクセルで無く、ワードVBAがそれにふさわしいが、ワードVBあを勉強できますか。 ーー それに上記のロジックを、素人的にプログラムに実現(組む)と、処理時間がやたらにかかりはしないかと心配します。 こういう分野・テーマは、(文章の中から語(重複あり)を発見する)特有のアルゴリズムがありそうで、ベースになる、本格的な情報工学的素養が必要なように思います。類推で言えば正規表現の利用とかいうような。 http://wpedia.search.goo.ne.jp/searchlist.html?MT=%A5%D1%A5%BF%A1%BC%A5%F3%A5%DE%A5%C3%A5%C1&mode=3&kind=epedia&page_num=1 「パターンマッチング アルゴリズム」などとかで照会 ーー http://www.forest.impress.co.jp/article/2001/01/16/texteditor.html のような(ただしこの質問に適しているというのではありません)、質問に適したテキストエディターを探すのはどうでしょうか。

noname#46899
noname#46899
回答No.1

Accessなどのリレーショナルデータベースでやることです。 社員コードから氏名を呼び出すなど、リレーショナルデータベースでは普通にやっていることです。

noname#251034
質問者

補足

すみません。例に挙げた形が曖昧(簡略化しすぎ)でした。 ファイルAはHTMLやXMLです。変換したい部分は「test="title1"」の「title1」(属性値の部分)の様な形です。 ファイル内に綺麗に並んでいるわけではないのですが、Accessでもできますでしょうか?

関連するQ&A

  • パワポをエクセルに貼り付け(1スライド→1セル)

    パワーポイントを、エクセルへ貼り付けたい(1つのスライド→1つのセル) パワーポイントのデータをエクセルに貼り付けたいと思います。 ですが、そのままパワーポイントで複数のスライドを選択して、エクセルへと貼り付けると、 1つのスライドの中に改行している部分があると、それが別々のセルへ貼り付けられてしまいます。 例えば、 『1枚目のスライド』 タイトル:ひらがな あいうえお かきくけこ さしすせそ 『2枚目のスライド』 タイトル:カタカナ アイウエオ カキクケコ サシスセソ という2枚のスライドがあるとします。 それぞれ、テキストボックスはタイトルを除くと1つであり、 その1つのテキストボックス内に、改行して3行が入っています。 この2つのスライドを選択してエクセルに貼り付けると、 『あいうえお』~『サシスセソ』まで、6セルになってしまいます。 別々にではなくて、 『1枚目のセル』 あいうえお かきくけこ さしすせそ 『2枚目のセル』 アイウエオ カキクケコ サシスセソ となってほしいのですが・・ さらに、欲を言うと、『タイトル』と『テキスト』を、 隣あったセルへとコピーすることは可能でしょうか? つまり、A1~B2に対して、 『A1』 ひらがな 『B1』 あいうえお かきくけこ さしすせそ 『A2』 カタカナ 『B2』 アイウエオ カキクケコ サシスセソ というふうにしたいのです。 素人考えではどうにも無理っぽい気もするのですが、 プロの方など、何か特殊な方法があれば、ぜひともご教授いただけないでしょうか わかりにくい説明ですみません。

  • 複数のテキストファイルの一括置換について

    複数のテキストファイルの一括置換について 複数のテキストファイル(html)の中にある 【地域名】という文字列を一括でそれぞれA、B、C・・・・という風に異なる文字列に変換したいです。 たとえば 001/index.html の中にある【地域名】は北海道 に変換 002/index.html の中にある【地域名】は青森 に変換 ・ ・ ・ 変換前の文字列は同一ですが、変換後の文字列を全ファイル異なるものにしたいので秀丸等の一括置換ができずに困っています。 全ファイル開いて1つ1つ検索置換していくには2000ファイルほどあるので大変なので何かいい案はないでしょうか? よろしくお願いいたします。

  • ◆文字列内の複数置換

    いつもお世話になっています。 置換についてご教授下さい。 文字列($str)を置換して$afterのように変換させたいです。 配列($patterns)で置換のパターンは持っています。 $str = "あF03いうえF02おF01"; $patterns = array("F01" => "A", "F02" => "B", "F03" => "C"); $after = "あCいうえBおA"; 宜しくお願い致します。

    • 締切済み
    • PHP
  • 文字列変換のプログラムについて

    こんにちは。 C言語で以下のようなプログラムを作りたいと考えているのですが、うまく実装できず困っています。 入力ファイルには、【単語(ひらがな)+Tab+その読み(音素列)】が書かれているとします。 例: あいうえお(Tab)a i u e o かきくけこ(Tab)ka ki ku ke ko ・・・ (音素は半角空白で分けられているものとします) このファイルを読み込んで、【単語(ひらがな)+Tab+単語(カタカナ)+Tab+その読み(音素列)】を別のファイルに書き込む  例: あいうえお(Tab)アイウエオ(Tab)a i u e o かきくけこ(Tab)カキクケコ(Tab)ka ki ku ke ko ・・・ というプログラムを作りたいと考えています。 アルゴリズムとして、 (1) ファイルから1行読み込む (2) Tab文字がくるまでの文字列を配列に保存(例でいう「あいうえお」の部分です) (3) Tab文字の次の文字から行末までの文字列を配列に保存(例でいう「a i u e o」の部分です) (4) (2)の1文字ずつをカタカナに変換(ASCIIコードの変換で可能?) (5) (2)(3)(4)を用いて出力用ファイルに書きこむ という流れを考えたのですが、(2)の部分でまず手こずっています。 #include<stdio.h> main(){ FILE *fin; FILE *fout; char buff[200]; char word[200]; int i=0; /*読み込み用ファイルを開く*/ fin = fopen("input.txt", "r"); if( fin == NULL ){ printf( "File open error\n" ); return; } /*書き込み用ファイルを開く*/ fout = fopen("output.txt", "w"); if( fout == NULL ){ printf( "File open error\n" ); return; } /*1行ずつ読み込む*/ /*読み込める間繰り返す*/ while(fgets(buff,200,fin) != NULL){ /*タブ文字がくるまで拾う*/ while(buff[i] != '\t'){ /*文字列を配列wordに保存*/ word[i] = buff[i]; i++; } /*保存できているかの確認*/ printf("%s",word); fclose(fin); fclose(fout); } 実行後、wordの中身が表示されるのですが、 あいうえお,(文字化け)(文字化け) というように、【,(文字化け)(文字化け)】という謎の文字がついてしまいます。 また、入力ファイルの中身が2行以上でも、 あいうえお,(文字化け)(文字化け) あいうえお,(文字化け)(文字化け)・・・ というように、1行目の結果しか出てこないです。 どこを直せばいいのでしょうか? (というかそもそもCよりPerlとかで作ったほうがもっと楽なのかもしれないですが・・・) 教えて頂けると助かります。よろしくお願いします。

  • VLOOKUPで違う値をとってきます。

    エクセルの表で A列     B列 あいうえお  1 かきくけこ  2 さしすせそ  3 たちつてと  4  ・      ・  ・      ・  ・      ・ YMCA 403 という表からC1のセルに VLOOKUP(D1,A1:B403,2,1) と打ち込み D1のセルに 「あいうえお」 と打ち込むと、「1」が出てくると思うのですが、 なぜか「6」と出てきます。 原因が分かりません。 どなたかお教えいただけますでしょうか。

  • エクセルのマクロについて質問です。

    あセルを選択すると、その列の行を一番下まで書き出すようにしたいと思っています。 A1セル=ひらがな E2セル以降=書出し B列 ひらがな ←タイトル(B1セル) あいうえお かきくけこ さしすせそ C列 カタカナ←タイトル(C1セル) アイウエオ カキクケコ サシスセソ D列 英文字←タイトル(D1セル) abcd efgh ijkl 縦になっててちょっと見づらいですが、このような場合、A1の“ひらがな”というワードが入っていて、マクロを実行するとその下の行である “あいうえお” “かきくけこ” “さしすせそ” と、E2以降に表示するようにしたいのですが、どのように考えてコードにしたらいいのか分からないので教えていただけないでしょうか。

  • 文字列をランダムに並び替えるソフト

    入力した文字列をランダムに並び替えるツールを探しています。 例えば、テキスト内に あいうえお かきくけこ さしすせそたち つてとなにぬねの とある場合、そのファイルを読み込むと おえいあう きくかけこ すさしそちたせ つてなのにとねぬ のようにランダムに並び替えてテキスト形式などで出力してくれるようなものです。(行ごとにランダムに並び替える) http://www.forest.impress.co.jp/article/2004/03/19/okiniiri.html のようなソフトは見つけたのですが、並び替えたものが出力されるわけではないので使えませんでした。 自分でプログラムを組んだほうが早いのかもしれませんが、いかんせんプログラムの知識がまったくないのでできません・・・ もしこのようなツールがありましたらご紹介お願いします。

  • PHPでの文字列置換の方法について

    質問があります。 PHP5で下記のようなページを作りました。 <?php $a = "あいうえお"; $b = "かきくけこ"; ?> <html> <head> <title>トップページ</title> </head> <body> <?php print $a ?> <?php print $b ?> </body> </html> 実行結果はこうなります。 あいうえお かきくけこ これを、別ファイルに $a = "あいうえお"; $b = "かきくけこ"; と書いたものをインクルードするにはどう書けばいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • javaScriptで、テキストエリアのある文字列を見つけて、

    javaScriptで、テキストエリアのある文字列を見つけて、 その行から、1行目と2行目を消すという処理を行いたいのですが、 コーディングがわかりません。 教えて下さい。 (例) 下記のテキストエリアから、「<ターゲット文字列>」を見つけて、 その行から1行目と2行目、つまりは、「さしすせそ」と「たちつてと」を削除したいです。 -----textarea----- あいうえお かきくけこ <ターゲット文字列> さしすせそ たちつてと

  • 関数の中のシート名【複数】を置換を使って置換るには

    タイトルの件、質問します。 下記1の関数があります。 この中にあるシート名を下記2のとおり、置換を使って 書き換えたいと考えています。 実践しましたが、うまくできませんでした。 方法は、手入力以外であれば、置換機能ではなくてもOKです。 ご存知の方、いらっしゃいましたら、宜しくお願いします。 【下記2】 Sheet1 を 1000 に書き変えたい Sheet2 を 2000 に書き変えたい Sheet3 を 3000 に書き変えたい ※1000、2000、3000とは、シートの名前です。 【下記1】 =IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿ブックa.xls]Sheet1!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿ブックa.xls]Sheet1!A:C,2,FALSE)) &IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿ブックa.xls]Sheet2!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿ブックa.xls]Sheet2!A:C,2,FALSE)) &IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿ブックa.xls]Sheet3!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿ブックa.xls]Sheet3!A:C,2,FALSE)) ※本関数は、教えてgoo回答者様に、ご教授いただきました。

専門家に質問してみよう