CSV形式のテキスト(各行末は改行)を、HTMLのテープルに変換する正規表現を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/09/08 14:49:48
  • 終了:2008/09/15 14:50:03

回答(3件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/09/08 18:02:39

ポイント27pt

正規表現についての質問ですが、エディタということなのでマクロ機能を使用してはいかがでしょうか。


(1)メニューの「マクロ」から「編集」を選択し、そこに下記のコードをコピーします。

document.selection.StartOfDocument(false);
document.selection.Replace("^","<TR><TD>",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace("$","</TD></TR>",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace(",,",",&nbsp,",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace(",","</TD><TD>",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
document.selection.NewLine(1);
document.selection.LineUp(false,1);
document.selection.Text="<TABLE>";
document.selection.EndOfDocument(false);
document.selection.NewLine(1);
document.selection.Text="</TABLE>";

(2)同じくメニューの「マクロ」から「名前をつけて保存」を選び、保存します。

(3)対象となるCSVファイルを開き、

(4)メニューの「マクロ」から、一番下にある先ほど保存したマクロを選択します。


これで、CSV がHTMLのテーブル形式になるかと思いますが、どうでしょうか。


正規表現では複数ステップで実行すればできると思いますが、カラム数が不定の場合

表現が難しいかと思います。

http://e-words.jp/w/E382ADE383BCE3839CE383BCE38389E3839EE382AFE3...

id:kazubokkuri No.2

かずぼっくり回答回数92ベストアンサー獲得回数82008/09/08 18:30:12

ポイント27pt

今回、EmEditorで変換を行うということですので、以下のCSV形式のテキストをEmEditor Professional 7.00でテストを行いました。

"a","b","c","d"

1,2,3,4

もしご希望の動作ができなかったらごめんなさい。


まず、テキストの一行目と最後の行は空白にしておいてください。

次に「置換」ダイアログで、「正規表現を使用する」にチェックを入れてください。



次に、「検索する文字列:」に「"?\n"?」を入力、「置換後の文字列」に「</td></tr>\n<tr><td>」(都合上、一部大文字になっていますが、すべて小文字に直してください)を入力し、「すべて置換」してください。

f:id:kazubokkuri:20080908175751p:image


次に、「検索する文字列:」に「"?,"?」を入力、「置換後の文字列」に「</td><td>」(都合上、一部大文字になっていますが、すべて小文字に直してください)を入力し、「すべて置換」してください。

f:id:kazubokkuri:20080908175752p:image

これで、

</td></tr>

<tr><td>a</td><td>b</td><td>c</td><td>d</td></tr>

<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>

<tr><td>

(都合上、一部大文字にしています)

という内容になっていると思います。

必要に応じて、一行目と最後の行の余分なタグを削除したり、

タグを追加すればテーブルのできあがりです。


もし何か補足が必要でしたら、コメント欄で補足しますので、お気軽にどうぞ。

id:niwa-mikiho No.3

niwa-mikiho回答回数508ベストアンサー獲得回数382008/09/08 22:39:53

ポイント26pt

my @data;

push(@data, "1,,3,4,5,9\n");

push(@data, "1,2,,4,5,9\n");

push(@data, "1,2,3,,5,9\n");

push(@data, "1,2,3,4,,9\n");

push(@data, "1,2,3,4,5,9\n");

foreach my $line (@data){

$line =~ s/([^,]*)[,\n]/$1<\/td>/g;

$line =~ s/^(.*)$/$1<\/tr>/g;

print $line . "\n";

}

これでどうでしょう。。。

  • id:Mook
    何を使って変換を行うのですか?

    Perl? PHP? その他の CGI ?
  • id:crashtruck5
    あっ、EmEditorです。
  • id:Mook
    エディタでのお話のようなので、正規表現ではなくマクロでの回答をしました。
    あくまで正規表現での解決をお望みであれば、開かないでください。

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

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

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

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