こんにちわ!NAKANOです。
タイトルの事なのですが、検索エンジンで調べて
殆ど回答らしき事はかいてあるのですが、解らない
事が結構あるので掲載させて頂きます。
まず環境は数行あるCSVのデータから一部の行だけを
引っ張ってテーブルに流す方法までは行き着きました。
で、そのテーブル表示させた値はさまざまで項目毎に
「<TD>」で分けております。一番右端が数字なのですが、
これに「3桁毎のカンマ」を付けたいのですが、色んな
サイトで紹介されている手法を参考にやってみたのですが
どうにも上手くいかなくて…(汗)
それでここに質問させて頂いた次第で御座います。
最終的に『1,234,567,890』って感じになれたらな~
って思っています。
宜しくおねがいいたします。
No.4ベストアンサー
- 回答日時:
入力ファイルが
テスト1,テスト2,テスト3,テスト4,123456789.01
とした場合ですと
open(DATA, "test.csv");
while(<DATA>) {
s/[\r\n]*$//;
@cols = split(/,/);
foreach $col (@cols) {
$col =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g; # ここでカンマクギリ(BLUEPIXY様の小数点対応版をしよう)
print "[$col]";
}
print "\n";
}
close(DATA);
とすればいいかとおもいますが?
もしかしてですが
テスト1,テスト2,テスト3,テスト4,123,456,789.01
こうなってるとか?
だとしたら、項目数がわかってることが前提になりますが、
open(DATA, "test.csv");
while(<DATA>) {
s/[\r\n]*$//;
@cols = split(/,/, $_, 5); # ','で5個まで分けてそれ以降は分けない
foreach $col (@cols) {
print "[$col]";
}
print "\n";
}
close(DATA);
とすればいいのでは?
tokebi 様。お世話になっております。
戴いたソースをそのまま使ってみると上手くいくのは
確認できます。私が作ったCGIにもいくつかは適用
出来ました。何となくは理解できたのですが、データ
をテーブルに流して表示させている場合はやはり出来
なかったです…
でも3桁毎にカンマを入れる手法の質問としては解決
なのでここは一旦閉じさせて戴きます。
大変参考になりました。本当にありがとう御座います。
No.5
- 回答日時:
>扱い方がわかりませんでした
,区切りのフィールドを切り出したあと、
$colに数値が入っているのが判っているとしたら
$col=commify($col);
とすれば、$colにカンマ区切りの文字列が入ります。
sub commify {
…
}
の部分は、どこか邪魔にならない場所(スクリプトの最後とか)にでも置いておけばいいです。
BLUEPIXY 様。お世話になっております。
おかげ様で仕組みは何となく分かったのですが、
下で返答した様にテーブルがどうも…
また改めて質問はさせていただこうかと思います。
取り合えず一旦は解決ということで閉じます。
本当に何度もありがとう御座いました。
No.3
- 回答日時:
1 while $text =~ s/(.*\d)(\d\d\d)/$1,$2/;
とか?
この回答への補足
ここで追記の質問をします。
CSVを読んでテーブルに流す仕組みのCGIファイルを
Perlで作ったのですが、このCGIファイルに組込む
んですよね?Perlファイルで作っても上手くいきませ
んでした。ひょっとしてCSVでは出来ない?のかなぁ…
私が使っているソースは以下のものが基本形になっています。
open(DATA, "test.csv");
while(<DATA>) {
s/[\r\n]*$//;
@cols = split(/,/);
foreach $col (@cols) {
print "[$col]";}
print "\n";}
close(DATA);
因みに『split(/,/);』を使わなければ3桁ごとにカンマ
は入るようです。
何かご教授いただければ・・・・お願い致します。
Tacosan 様。お返事ありがとう御座います。
先にお返事いただきました方のと同様、扱いがわかりませんでした。すいません・・・
No.2
- 回答日時:
クックブックに載っていたものを転載しておきます
$num=1234567.89;
$commaNum=commify($num);
print "$commaNum\n";
sub commify { #クックブック 2.16(P103)
my $text = reverse $_[0];
$text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g;
return scalar reverse $text;
}
基本的なアイデアは逆にしてから3桁ずつ区切って、カンマを挿入して、また逆にして戻す、のが簡単です。
上記の方法では小数点にも対応しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- 建築士 建築士製図試験での縦距離の数値の書き方を教えて下さい 3 2023/07/16 11:36
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーバーのテキストファイルを...
-
『数字の3桁毎にカンマを付け...
-
SUN BBSの改造方法
-
wordの数式について 定積分を書...
-
WEBページを強制的に横画面で見...
-
「value」に2つの値をセットす...
-
VB初心者。小数点以下の表示で...
-
[HTML]プルダウンメニューの横...
-
FORMのselectの選択肢を最初か...
-
INPUT TYPE
-
チェックボックスの返す値
-
ローカルテストサーバーと本番...
-
perlで自動ログインをしたいが...
-
IEで「file://」プロトコルが使...
-
EXCELとの連携
-
ディレクトリのファイル数取得
-
VB.net データーグリッドビュー...
-
selectboxの画面遷移で、postデ...
-
ラジオボタンが両方とも選択で...
-
一つの検索窓で複数のサイトか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IIS の@INC ERRORについて教えて
-
perlにおけるセッションIDについて
-
表示を一覧表形式にしたいので...
-
Mechanizeにおけるボタンクリッ...
-
次のcgiファイルを開くには? ...
-
ソケットの使い方が分からない
-
『数字の3桁毎にカンマを付け...
-
標準入力からデータが読込めない
-
wordの数式について 定積分を書...
-
SUN BBSの改造方法
-
ラジオボタンが両方とも選択で...
-
掲示板(kentさんの所のsunbbs...
-
「value」に2つの値をセットす...
-
select値をhiddenのvalueに渡し...
-
チェックボックスの返す値
-
WEBページを強制的に横画面で見...
-
VB.net データーグリッドビュー...
-
プログラミングについての質問...
-
[HTML]プルダウンメニューの横...
-
EXCELとの連携
おすすめ情報