人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: crashtruck5
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CSV HTML テキスト テープ 正規表現
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Mook
●27ポイント

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


(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...


2 ● かずぼっくり
●27ポイント

今回、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>

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

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

必要に応じて、一行目と最後の行の余分なタグを削除したり、タグを追加すればテーブルのできあがりです。


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


3 ● niwa-mikiho
●26ポイント

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";

}

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ