- ベストアンサー
CSVの3行目だけを…
はじめまして!Nakanoと申します。 えっと、以下質問になります。おねがいします。。 CGI/Perlを始めて1週間程度の素人なのですが、 CSVファイルをHTMLのテーブル表示させる 様にしたいなと思っています。 そこで用意したCSVファイルが5行と8列で カンマ区切りのみで構成されています。 このCSVファイルから3行目だけを抽出する方法 ってありますでしょうか? 1行目のみ表示や1行目以外の2行目以下全てを表示 させたりは出来たのですが、3行目だけを表示するの がどうしても分かりませんでした・・・・・ 何方様か。よろしければその辺の所を詳しくご指導 いただけないでしょうか? よろしくおねがいします。
- naka225
- お礼率88% (8/9)
- Perl
- 回答数3
- ありがとう数5
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
open(NW,"$csv"); seek(NW,0,0); @news = <NW>; close(NW); print "$news[2]"; とりあえず、これでいくんちゃう? ファイルをオープンして、@newに入れて閉じて、 配列の0から初めて3番目を取り出す。 @news って、 $new[0] = "零"; $new[1] = "一"; $new[2] = "二"; $new[3] = "三"; の集まりだから、ファイルを配列に入れちゃえすれば、 あとは、変数として取り出せる、っと。 あとは、下の人みたいに、 ループなら、 for($i=0; $i<$#new; $i++){ if($i eq 3){print "$new[$i]";} } $#newは、newの配列の総数。 あとは、spliceで配列から切り取って、って方法も あるけど。 ・・・最近phpしかつかってないから、あってないかも。^^;
その他の回答 (2)
- happy_books
- ベストアンサー率28% (131/460)
早速訂正。 new と news が混じってるけど、統一してください。 それと、newやnewsは関数じゃなくって、変数名・配列名 なので、適当に変えても大丈夫。 newって関数ありそうだもんね。 とりあえずは、この辺は初期の初期で、大事な所だから、 納得いくまでいじってみたら~♪^^;
お礼
happy books 様。 お世話になります。 ご丁寧に訂正頂きありがとう御座います。^^
- nekoda_nekomichi
- ベストアンサー率20% (1/5)
whileで回すんですよね? $num = 0; while($file = <CSV>){ $num++; if($num == 3){ print "$file"; last; } } とかでできそうですかね。 確か、現在の行番号を取得する 特殊変数もあった気がします。 そちらの方が簡単かもしれませんが 私がよく使う手は、これです。
お礼
nekoda nekomichi 様 返事が遅くなり申し訳ありません。 またお早い回答ありがとうございます。 出来る、という事がわかっただけでも助かりました。 掲載情報も参考にさせていただきます。^^
関連するQ&A
- HTMLファイルをCSVファイルへ
はじめまして。 HTMLファイルのタグ以外のデータを最終的にCSVファイル(カンマ区切り)に 落としたいのですが、このプログラムをPerlで書かなければなりません。 ツリー構造を利用?して書くと言われましたが、良くわかりません。 Perlも始めたばかりなので、わかる方は教えてください。
- 締切済み
- その他(プログラミング・開発)
- CSVをダウンロードし保存せずに開くと、1セルに1行表示されてしまいます。
CSVファイルをエクセルで開くと、カンマ区切りでセルが分かれます。 しかし、WEBでCSVをダウンロードし、保存せずにそのまま開くと、1セルに1行表示されてしまいます。 数日前までは、カンマ区切りでセルが分かれていたのですが…。 同僚やお客様先からも、昨日今日で同じような問合せがきはじめたので、アップデートに絡んでいるのかな?とも思っています。 何が原因で、対処法があるのか教えていただけませんでしょうか。
- 締切済み
- オフィス系ソフト
- 指定ファイル内の一部内容を抽出してCSV出力したい
aa.csv → 複数の「ID」「htmlファイルの保存ディレクトリ」がカンマ区切りで記述されたCSV bb.csv → 複数の「ID」「抽出したHTMLソース(「BODY」「/body」は含まない) aa.csvに記述されたディレクトリ毎にhtmlファイルを開き、その中にある「body」~「/BODY」内の内容を抽出し、bb.csvに記述したいと考えています。 EXCELVBAで行なおうと試行錯誤したのですが、うまくいきません・・。 Perlなどを使用すれば可能と聞いたのですが、私のレベルだとうまく動作してくれず、大変困っています。 どなたか、アドバイス等を頂けないでしょうか。 どうぞ、よろしくお願いします。
- ベストアンサー
- Perl
- VBでCSVファイルのある行をインポート
VBでCSVのインポートをしたいのです。 CSVファイルの中身で、最初の5行は読みません。そして、カンマ区切りの行の最初の文字が数字である場合だけを読みたいのです。で最後の3行も読みません。 ですので、CSVのデータを読む場合に最初の5行を飛ばすという方法か、カンマ区切りの行の最初の文字が数字の場合だけ読むという方法はありませんでしょうか。 Line Input #intFileNo, strTextLine strTextLine = Replace(strTextLine, """", "") str = Split(strTextLine, ",") こんな感じのコードで考えてます。 お分かりの方いましたらお願いします。
- ベストアンサー
- その他(ITシステム運用・管理)
- CSVファイルをExcelに関連づけた状態でCSVファイルをオープンした後
CSVファイルを 『 1,2,3,0004 』 でCSVファイルを開くとExcelがご丁寧にカンマ区切りでセルを分けて表示して ますが、『0004』のセルが『4』としか表示できません。 『0004』と表示する方法を何かご存知でしょうか? ちなみに、 『 1,2,3,"0004" 1,2,3,="'0004" 1,2,3,"0004" 』 ともに駄目でした。 3行目は表示はできるものの、仕様上問題ありでした。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- CSVファイルの読み込み
お世話になります。 VBAでCSVファイルを読み込んで処理をしたいのですが、 たとえば下記のようなCSVファイルの場合 2つめの項目が金額セットされており、あらかじめ通貨編集(カンマ編集) がされていて 金額を1つの項目として読み込む事が出来ません。 金額は""でくくってあるのですが、 カンマ区切りのデータと""でくくってあるデータを うまく区別して3つの項目をそれぞれ抽出する事は可能でしょうか? -----以下CSVの内容------ 日付,金額,データ 2007/03/09,"1,200",TEST1 2007/03/09,"12,200",TEST2 2007/03/09,"76,00",TEST3 2007/03/09,"4,5600",TEST4 --------------------------- ちなみに現在はこのようにカンマ区切り指定でデータを抽出してるので うまく出来ません。 'FileNameにはオープンするファイル名がセットされています Open FileName For Input As 'textlineに1行を読み込む Line Input #ch1, textline csvline() = Split(textline, ",") VBAがまだ不慣れな為質問やサンプルが分かりずらいと思いますが よろしくお願いします。
- ベストアンサー
- Visual Basic
- マクロでのcsv読み込みについて
エクセルのマクロにてcsvファイル(カンマ区切り)のデータを読み込むマクロを制作しているのですが、そのcsvファイルが1行めを2行目がデータ本体ではない為カンマの数が違い、openを使って読み込みを行うとうまくいきません。何かいい方法はないでしょうが。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- CSVファイルの行が突然消える
あるデータを抽出し、それをCSVファイルで取り込み、1つ取り込む ごとにCSVファイルが1行ずつ増えていきます。 適当な時期に、何行かたまった行を一気にAccessを用いてさらに取り込み ます。(取り込むのみ) あるとき、CSVファイルを開くと突然CSVファイルの行が減って いるのです。 何が起きているのでしょうか? Accessに何かマクロとか組んであって突然消えるのでしょうか? Accessを開く前と開いた後(取り込んだ後)で、特にCSVファイル に変更はありません。 あるとき突然CSVファイルを開くと昨日まであった行が突然 消えてしまうのです。(いつ起こるのか予測できていません。) CSVファイルにはマクロが組んであるようには見えません。 何かわかればお願いします。
- ベストアンサー
- オフィス系ソフト
- タブ区切りtxtファイルをCSVファイルにしたい
数値データの入ったタブ区切りのテキストファイルが約80個あり、 それらを全てCSVファイルにしたいです。 テキストファイルのデータ形式は以下のようになっています。 339.54 1091.50 339.92 1091.50 340.30 1091.50 340.68 1057.60 341.06 1028.22 これがあと数百行あります。 コマンドプロンプトでCSVにリネームすると、数値が詰まってしまい、困っています。 例えば上のデータ例であれば、 339.541091.50 のように表示されたCSVファイルになってしまいます。 339.54, 1091.50 のようなカンマ区切りのCSVファイルとして出力する方法はないでしょうか? VBAの知識が少しだけあるので、それを使った方がいい場合は教えて頂けると幸いです。 よろしくお願い申し上げます。
- 締切済み
- Visual Basic
お礼
happy books 様 返事が遅くなって申し訳ありません。 お早い返事ありがとう御座います。 ソースの方大変参考になりました。自分の作った ソースに組み込んでみたらちゃんと行指定が出来ました。 ありがとう御座います。 ただ一つ気になるのが、『seek(NW,0,0);』この中の数字 が何を意味しているのか解りませんでした。無くても指定 出来ちゃう?あれ?? もっと凝った使い方する時にひつようなのかな~??? とにかく行指定は出来るようになったから良いのですが… あっ、あとsplitで配列から切り取って、っていうのも 出来るんですか?どうするのでしょうか? よろしくおねがい致します