csvからhtml表生成最強言語は?
■ このスレッドは過去ログ倉庫に格納されています
0001ほんとのとこは?
NGNG表を生成するプログラムの作成で
どの言語で、どのようにすれば、
最小の行数で作れますか?
または、実行ファイルが最小サイズ
になるのはどれですか?
または、csvファイルを選択してか
ら、html表が生成されるまでの
時間が最短なのはどれですか?
簡単そうで、使い道がありそうな
このプログラムで
どの言語をどのように使うのが
最強か?教えて下さい。
実例での具体的な比較をみてみたいです。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGJavaを使えば1行
エクセルを使えば0行
0005デフォルトの名無しさん
NGNG00065
NGNG0007棄教者 ◆witdLTi2
NGNGprint '<TABLE>';
while(<>) {
print '<TR>', (map{ '<TD>$_</TD>' } (split /,\s*/)), '<TR>';
}
print '</TABLE>';
==============================
と書いてみるテスト
>>3-4
確かに Excel だと一番早いね。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGこれって単発質問クソスレだよな?
あまりな糞っぷりなので、みんな感覚が麻痺したのか?
0010デフォルトの名無しさん
NGNGいくら言っても糞スレは立つもんだからいい加減同じことばっかり言うの飽きちゃった
0011デフォルトの名無しさん
NGNG速度面は疑問。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG最速: アセンブラ
リソース最小: アセンブラ
開発期間最小: エクセル
コード行最小: エクセル
実行ファイルが最小:アセンブラ
というこてでアセンブラが最強ということこのスレ結論がでました。
0015デフォルトの名無しさん
NGNG>このケースでもRubyは最強なのか?
なんか11が病気なんですけど。
0016デフォルトの名無しさん
NGNG宿題かなんかだったにしろお題が手軽でよかったんだろ。
(もっとマイナー言語キボン。)
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGprogram CSV2HTML;
uses SysUtils,Windows,Classes,shellapi;
function f(fname:string):TStrings;
var i,j:Integer;
var w:TStrings;
var s:string;
begin
w:=TStringList.Create;
try
Result:=TStringList.Create;
Result.Add('<HTML><HEAD><TITLE>'+fname+'</TITLE></HEAD><BODY>');
Result.Add('<TABLE BORDER>');
if FileExists(ParamStr(1)) then
with TStringList.Create do try
LoadFromFile(ParamStr(1));
for i:=0 to Count-1 do begin
w.CommaText:=Strings[i];
s:='<TR>';
for j:=0 to w.Count-1 do s:=s+'<TD>'+w.Strings[j];
Result.Add(s);
end;
finally free;end;
finally w.free;end;
Result.Add(' </TABLE></BODY></HTML>')
end;
var fname,wfname:string;
begin
if ParamCount=1 then begin
fname:= ParamStr(1);
if FileExists(fname) then begin
wfname:=ChangeFileExt(fname,'.html');
with f(fname) do try
SaveToFile(wfname);
ShellExecute(0,'open',PChar(wfname),nil,nil,SW_SHOWNORMAL);
finally free;end;
end;
end;
end.
0020デフォルトの名無しさん
NGNG1コマンド1行だから
結構長くなるか。
それとも変換コマンドがあって
1発とかか?
0021デフォルトの名無しさん
NGNGえくせるVBAじゃ
0022デフォルトの名無しさん
NGNG仕事で使うなら TPageProducer 使った方がいいだろけど D6パーソナルで実行出来るように直書しました
0023デフォルトの名無しさん
NGNGCSVって、こんな単純なパターンマッチでちゃんと分けられたっけ?
CPANにあるCSV取りこみ用のモジュール使ったほうがいいかも
(日本語対応がネックではあるが)
0024デフォルトの名無しさん
NGNG1、1行に複数の項目が入る。項目は基本的にカンマで区切る
2、 カンマを含むような文字は "文字列"とする
3、 先頭行は項目名の場合がある
かな?
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGきちんとした規格あるの?
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG","""","
0030デフォルトの名無しさん
NGNG1、 1行に複数の項目が入る。
2、 項目は基本的にカンマで区切る
3、 文字列は必ず "文字列" とする流儀と 必ずしもそうしないものがある
4、 少なくともカンマを含むような文字は "文字列"とする
5、 もし 文字列中に " を一つ含む場合は ""と重ねる
6、 先頭行は項目名の場合がある が、それを区別する手段はない
0031デフォルトの名無しさん
NGNG11はRuby厨のたわごとを
真に受けてしまう素人さんと
おもわれ。
でも、まじめな話しRubyで処理
させるとすると、何行くらいに
なるんだ。
1行ですむのか?
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGだから、単独の " は """" と4つ "が並ぶ事になる
ではコレでどうだ
1、 1行に複数の項目が入る。
2、 項目は基本的にカンマで区切る
3、 文字列は必ず "文字列" とする流儀と 必ずしもそうしないものがある
4、 少なくともカンマか"を含むような文字は "文字列"とする
5、 もし 文字列中に " を一つ含む場合は ""と重ねる
6、 先頭行は項目名の場合がある が、それを区別する手段はない
0037デフォルトの名無しさん
NGNG1、 1行で1レコードとし、それぞれのフィールドはカンマで区切られている
2、 少なくともカンマまたは " を含む文字列は "文字列" とした上でカンマで区切られる
3、 文字列中の " は "" と重ねて表現する よって ”1文字は """" である
4、 先頭行はフィールド名の場合もある
0039デフォルトの名無しさん
NGNGテストコードを素早く書けるのはPerl
ちゃんと動くコードを最初に出せるのはDelphiという事で
0040デフォルトの名無しさん
NGNG実行ファイルのサイズや、ソースの行数に意味があるのでしょうか?
必要なのは、少ない行数で書けることではなく、素早く書けるかという点にあるように思いますよ
0041デフォルトの名無しさん
NGNGJAVAだとStreamTokenizer 使えばいいけど、なんだかなあ
0042デフォルトの名無しさん
NGNG必要になったら書き捨てる程度のもんじゃない?
0043デフォルトの名無しさん
NGNGじゃ書き捨ててみて下さい
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGprint "<table>\n";
while(<>) {
print "\t<tr>";
s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
print map {
/^"(.*)"$/ ? '<td>' . escape(scalar($_ = $1, s/""/"/g, $_)) . '</td>'
: '<td>' . escape($_) . '</td>'
} (/("[^"]*(?:""[^"]*)*"|[^,]*),/g);
print "</tr>\n"
}
print "</table>\n";
sub escape {
my $str = shift;
$str =~ s/&/&/g;
$str =~ s/</</g;
$str =~ s/>/>/g;
return $str;
}
0046デフォルトの名無しさん
NGNGいや、別に必要としてないし。
それよりも CVS から HTML 表生成かと思ってたのに
csv だったのでがっかり。
0047デフォルトの名無しさん
NGNG「カンマ区切りである」くらいしか統一されていない。
""の解釈も統一されているワケじゃない
1が仕様を出さないことにはどうにも。
0048デフォルトの名無しさん
NGNGテストコードを素早く書けるのはPerlとの事ですが
よく、この板で見かけるRubyは?
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG>よく、この板で見かけるRuby
↑なかなか的を射た表現やね
0052デフォルトの名無しさん
NGNGDreamWeaverを使えばコード書かないでできる。
ソートもできる。一番実用的で現実的。
0053デフォルトの名無しさん
NGNGExcelを使えばコード書かないでできる。
ソートもできる。一番実用的で現実的。
0054デフォルトの名無しさん
NGNGアフォですみません。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGおまえら!
HTMLソースからCSV形式のファイルを生成するソースを書いてください
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGまあ、お前にはな。
0059shige
NGNG0060デフォルトの名無しさん
NGNGつー、身もふたもない結論だった気がするんだが。あのスレどこだっけな。
0061デフォルトの名無しさん
NGNGそのいい加減なものを上手く guess してくれるコードがほしいんじゃないカナ?
0062デフォルトの名無しさん
NGNG人工知能が必要と思う。
guess が「当て推量を言う」の方なら何とかなると思うが。
0063デフォルトの名無しさん
NGNG一番といえるかどうか。
無駄タグ削除によるダイエットの
手間が、無視出来ない事もある。
0064デフォルトの名無しさん
NGNGじゃあLISPか(w
list<->csvなんて朝飯前だし
ちょうどlist<->HTMLなんてのも専用スレにある。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNGそれだけは宇宙最強の速度(・∇・)
%%
[^,\n]*, {
yytext[strlen(yytext) - 1] = '\0';
printf("<TD>%s<TD>", yytext);
}
\n printf("</TR><TR>");
. ;
%%
0067デフォルトの名無しさん
NGNG意味わかんね。
0068デフォルトの名無しさん
NGNGputs "<table>"
readlines.each do |t|
 puts "<tr><td>" + t.chop!.gsub!(/,/,"</td><td>") + "</td></tr>"
end
puts "</table>"
0069デフォルトの名無しさん
NGNG00701
NGNG>>69
いえ、結論はでてません。
まず、この板でよく見かける、言語
間の優劣合戦を拝見していると、
さまざまな観点での優劣の主張が、
乱れとんでいる様でした。
そしてそのうち”○○信者必死”
”○○厨ウザイ”というののしりあいの様になっているので。
それで、具体的なテーマを提示すれ
ば、それぞれの観点における、
このポイントでは、この言語が最強
っていう一応の結論が得られそうな
ので、スレ立てをさせて頂いた所です。
一応、現時点では、ちょこっと作って試すスクリプト系言語ではperl最強。
実用的で高性能なものを簡単に作るにはDelphi最強。
プログラマに要求される多大なスキルと、膨大な工数を許容可能ならば
アセンブラ最強。
の様ですが、まだまだ、他の言語からの、反対意見ありそうなので、ひきつづき意見募集ちゅうでつ。
0071デフォルトの名無しさん
NGNG理由は?
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG19
39
41
のレスと
perlについで、動くサンプルソース
がソッコーで提供された点。
VBやVC++のサンプルが無いのは
動くサンプルを作るのが面倒だと
推測出来るところ。
0074デフォルトの名無しさん
NGNG#include <iostream>
#include <string>
#include <sstream>
#include <functional>
#include <algorithm>
#include <boost/tokenizer.hpp>
template<typename T>
class table_writer :
public std::unary_function<std::basic_string<T>, void>
{
std::basic_ostream<T>& stream_;
public:
table_writer(std::basic_ostream<T>& stream)
: stream_(stream){ }
void operator()(std::basic_string<T> elem)
{ stream_ << "<td>" << elem << "</td>"; }
};
template<typename T>
void csv2html(
std::basic_istream<T>& in,
std::basic_ostream<T>& out)
{
boost::char_separator<T> d(",");
out << "<html><head><title></title></head><body><table border=1>";
std::basic_string<T> line;
while (!std::getline(in, line).eof()) {
boost::tokenizer<
boost::char_separator<T>,
std::basic_string<T>::const_iterator,
std::basic_string<T> > t(line, d);
out << "<tr>";
std::for_each(t.begin(), t.end(),
table_writer<T>(out));
out << "</tr>";
}
out << "</table></body></html>";
}
int main()
{
std::basic_ostringstream<char> ss;
csv2html<char>(std::cin, ss);
std::cout << ss.str();
return 0;
}
0075棄教者 ◆witdLTi2
NGNGソースを最初に提供したのは>>7だぞ。長さも一番短い。
あと一番イージー&プレインな解決法(Excel)を示したのは>>3>>4だ。
お前の目は節穴かと小一時間問いつめるぞ。
それが嫌なら削除依頼出すか牛鮭定食でも食ってろ。
0076デフォルトの名無しさん
NGNGええのう、C++らしいソースやのう
でもboostは標準じゃないと思う。
0077デフォルトの名無しさん
NGNG実はUNICODEにも使えそうで全く使うことが出来ない罠
0078デフォルトの名無しさん
NGNGExcelの*.csvってのはローカル仕様だらけだぞ。
Excelに完全準拠しようとすると悲惨な目にあう。
(まだAccessのほうがスジがいい。)
以下の方言をまじめにインプリメントする気になる?
方言1:"009"は文字列「009]とは解釈されず、数値「9」と解釈される
つまり、"〜"は、文字列であることを意味しない
0で始まる数字の文字列をそのまま渡す方法はない
方言2:赤"は、文字列「赤"」と解釈される
つまり、項目の先頭でない「"」は単なる文字扱い
方言3:"〜"の中では、CR/LFかLFで項目内改行ができる
つまり、トップダウンで1行読み込み→1項目取り出し
というロジックが組めない(頭から順に1項目ずつ取り出し、
その値を評価しながら読むしかない)
方言4:=、+などで始まる項目は式になってしまう
""でくくっても無駄(あくまで、中身を評価した値が優先する)
0079デフォルトの名無しさん
NGNGBCBでDelphiと同じようなソース出したら、C++最強ってことになる?
0080デフォルトの名無しさん
NGNG最強の言語が存在するなら今ごろ言語は一つに統一されてる。
0081デフォルトの名無しさん
NGNGじゃあ次は
>>37 に準拠したコードで競争する?
>>19のコードは"aa,bb",cc のようなデータは処理出来るけど
"aa bb",cc dd, のように"で括らずに空白が入った場合もセパレートするから
0082デフォルトの名無しさん
NGNGつーか、早い者勝ちならスレを早く見た人やすでにソースがある人の
勝ちじゃない。せめて条件としてスクラッチから書くことと作成時間を
明記することが必要じゃない。
もっと言えば、言語の比較なら作成者のスキルも同じ方がいいだろうね。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGカンマ直後の"だけを見ればいい カンマ直後以外の"については好きなように処理可
"で囲まれていない空白を含む文字についても実装依存可
3、 文字列中の " は "" と重ねて表現する よって ”1文字は """" である
"""" ->"
"この""もじ" ->この"もじ
"" -> 空
0085デフォルトの名無しさん
NGNGデファクトスタンダードと言う言葉を知らんのか...。
0086デフォルトの名無しさん
NGNG方言2は普通はどうなるの?
>あ"い,う"え,お
たとえば、これ。
0087デフォルトの名無しさん
NGNG方言3、改行の件は、改行を含むレコードをエンコードするスタンダードが無いから仕方がない
最初にややこしい文字は全部 %16進2桁 とかやればキレイだったかもしれないね
あるいは \n とかc言語方式とか
0088デフォルトの名無しさん
NGNGttp://www.din.or.jp/~egawa-n/delphi/func.html ここの CsvSeparateに変更すればそれでいいんじゃない?
0089デフォルトの名無しさん
NGNGそんなこと言ったら、C++はεπιστημη氏のCSVTokenizerで一発っす
0090デフォルトの名無しさん
NGNG文字列全体を先頭から処理してゆくしかないでしょ
0091デフォルトの名無しさん
NGNG>>33に準拠したコードって話なのに、どうしてexcel準拠前提で話し始めるの?
00921
NGNGすみません、不適切な部分を訂正します。
コンパイルするタイプで実用的で
高性能なものを簡単に作るにはDelphi最強。
perlのソースが最も早く短く提示
された事は認識してまして
スクリプト系最強と表現しましたが
Delphiについてが不適切でした。
その後、C++が提示されましたので
Delphi最強から、Delphi最強?に
なりました。
拝見した後、牛鮭定を食いに逝きましたが、財布をチェックしたら並
しか食えませんでした。
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG牛丼です。
単に「並」とたのんだので。
0096Delphi標準入出力バージョン
NGNG{$apptype console}
uses Classes, SysUtils;
var i: Integer; s: String; cvs: TStrings;
begin
cvs := TStringList.Create;
if ParamCount = 1 then s := ParamStr(1) else s := 'noname';
Writeln('<HTML><HEAD><TITLE>', s, '</TITLE></HEAD><BODY><TABLE BORDER>');
while not Eof(Input) do begin
Readln(s);
cvs.CommaText := s;
Writeln('<TR>');
for i := 0 to cvs.Count-1 do
Writeln(' <TD>', cvs[i], '</TD>');
Writeln('</TR>');
end;
Writeln('</TABLE></BODY></HTML>');
end.
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG””で囲まないで空白が入っていた時とか そこでセパレートされてしまうね
だから読み込みするなら >>88 のようなのを自作するしかないと思う
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGその他の古代言語の完全なプログラムも
見てみたい気がする。
0101デフォルトの名無しさん
NGNGBASICもほしいところだね
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG意味あるのか?
副作用使いまくりになるじゃん
0104デフォルトの名無しさん
NGNGHTMLTableWriter out = new HTMLTableWriter(new FileWriter("html"));
String[] line;
while((line = in.next()) != null)
out.write(line);
out.close();
in.close();
0105デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています