• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSVから値の割り出し2)

CSVから値の割り出し方法とは?

vsba23895の回答

  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.3

「パラメータ」を、「ヒット」するフィールドの有効フラグを消すために使って行けばいいのでは ? @is_valid を有効フラグにして ------------------ use strict; use Text::CSV; my $csv= Text::CSV->new(); my @target_list= (2,2,1,3); my @is_valid; my @field_list; while(<>) { chomp; if (my $OK= $csv->parse($_)) { @field_list= $csv->fields(); last unless(scalar(@target_list)); my $target= shift(@target_list); my $n_field= 0; foreach my $field (@field_list) { if (!(defined $is_valid[$n_field]) || $is_valid[$n_field]) { $field=~ s/1:3/1,2,3/; $is_valid[$n_field]= (grep(/$target/,$field))? 1 : 0; } $n_field++; } } } my @result_list; foreach my $flag (@is_valid) { my $field= shift(@field_list); push(@result_list,$field) if($flag); } print "result:",join(',',@result_list),"\n"; --------------------- あらゆるエラー処理を無視してます。(CSV が壊れていたり、データが「パラメタ」の行数より少なかったり…)。あくまでコンセプトとして。 #うーん、インデントが消えて見にくいですね

参考URL:
http://search.cpan.org/~alancitt/Text-CSV-0.01/CSV.pm
polalis
質問者

補足

vsba23895様、ご回答ありがとうございます。 >「パラメータ」を、「ヒット」するフィールドの有効フラグを 消すために と言われてるのは、どういうことを示唆しているのでしょうか? 当方、開発経験が浅いため、意味がきちんと理解できません。 それから、コマンドラインから実行すると「use Text::CSV; 」の行で、エラーが起きてしまいます。 <Can't locate Text/CSV.pm in @INC> お手数でなければ、ご教授いただけませんか?

関連するQ&A

  • CSVから値の割り出し

    CSVファイルの1行目を渡された引数から値を割り出し、配列(@x)に 格納して、2行目以降も1行目で評価された要素と同じ位置の要素を 別配列(@y,@z)に入れて、渡された複数の引数をもとに下記のように 評価したいのですが可能ですか? 例)CSVファイル:1レコード目:1,1,1,2,2,2,3,3,3        2レコード目:1,2,3,4,5,6,7,8,9        3レコード目:A,B,C,D,E,F,G,H,I 引数:2,3,1なら 結果:2,6,D   @x=2,2,2 @y=4,5,6 @z=D,E,F

    • ベストアンサー
    • Perl
  • 外部CSVをサイトに読み込み表示できるでしょうか?また値によって背景色を変えるということは可能でしょうか?

    外部にあるCSVをサイトに読み込んで表示するということは可能でしょうか? またCSVを行単位で読み込み、その値によって背景色を自動で変えるということは可能でしょうか? JavaScript初心者です。どうかご指導宜しくお願いいたします。m<_ _>m CSV例 ------------------------ 1行目 +10 2行目 -15 3行目 +5 4行目 0 表示例 ------------------------- http://farm4.static.flickr.com/3266/3116370342_2d0374218e_m.jpg 値(+): 背景(青) 値(-): 背景(赤) 値(0): 背景(黒)

  • マクロCSV出力

    Sheet1に入力されている値をCSVファイルに出力したいと思っております。 但し、特定のセルだけを取得して、1つのファイルに出力したいと思っています。 (1)D2~G2に入力されている値を取得 (2)E4~E10までと、E4~E10の最終列までの値を取得 (3)B11の値を取得 (4)A13~A列の最終行まで、A13~A列の最終行の最終列までの値を取得 (1)、(2)、(3)、(4)の値を取得して、1つのCSVファイルに出力するプログラムを作成したいと思っております。 (1)は1行目に出力 (2)は2行目~8行目に出力 (3)は9行目に出力 (4)は10行目以降に出力 出力の形式は ”TEST”,” ”,”SMP”のようにダブルクォーテーションで値を囲って出力したいと思っています。 値が入っていないセルは” ”,としたいと思っております。 サンプルを作成して頂けないでしょうか。

  • MYSQLでCSVインポートが一行目しかされません

    phpMyAdminで空のテーブルにCSVファイルをインポートをしているのですが、なぜか一行目だけしかインポートされずに困っています。 フィールド数は合っているのですが、なにか思い当たる原因があれば教えていただけますでしょうか。 こちらはチェックしていて、テキストエディタで開いてカンマの位置や数も合っているはずなのですが。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1132222936 ちなみにデータは、 フィールド名 a(varchar(20)),b(float(6,4)) に対して 値 1,1.34 2,1.21 3,1.25 のような単純なデータです。 すでにテーブルとフィールドは作ってあり、CSVデータは 1,1.34 2,1.21 3,1.25 というデータのみです。 何度やっても、「1,1.34」の一行目だけしかインポートされません。

    • ベストアンサー
    • MySQL
  • C言語 CSVファイルの読み込み

    前回の質問が説明不足だった為、こちらでもう一度詳しく補足を加え再度質問させていただきます。 ↓前回の質問 http://okwave.jp/qa/q6352672.html 読み込むCSVファイルは数値のみです。 具体的な例として数値をあげさせていただきます。 例:ファイル名 test.csv 10,1.1,1.2,1.3 20,2.1,2.2,2.3 30,3.1,3.2,3.3 上記のような4列3行のCSVファイルをC言語を使用し、 10→a 1.1→b 1.2→c 1.3→d 20→e 2.1→f 2.2→g 2.3→h 30→i 3.1→j 3.2→k 3.3→l といった具合に、任意の列・行の数字を任意の場所へ読み込みをするということが出来ません。 例をプログラムにするとどのようになるのか教えていただきたいです。 よろしくお願いします。

  • 集計データ

    いつもお世話になってます。 アンケートスクリプトで、フォームからPOSTされたデータをCGIで受けて、サブルーチン(CSVファイル操作) で回して該当のデータをフォームに返してます。 設問ファイル(html)→メインルーチン(cgi)→サブルーチン(pl) そこで、数十通りある設問のカテゴリ別に集計データを取りたいと思ってます。 <内容> 1列目…カテゴリ 2列目…別全データ件数 3列目…該当データ件数 <データ> 1,2000,258 2,2000,320 3,2000,115 ・ ・ ・ &ReadParseで、$in{'name1_1'},$in{'name1_2'},$in{'name1_3'},$in{'name2_1'},…のように 受けていますが、このkeyごと(name1_~)にCSVファイルへ書き出したいです。 それから別件で、CSVファイルの値の取り出しについてお聞きしたいのですが、 <内容> 1行目…初期区分 2行目…月日の範囲(1年を4分割) 3行目…結果区分 <データ> 1,1,1,1,2,2,2,2,3,3,3,3 "0405,0612","0613,0920","0921,1215","1216,0404", "0409,0718","0719,1020","1021,0107","0108,0408", "0321,0620","0621,0828","0829,0115","0116,0320" 1,2,3,4,1,2,3,4,1,2,3,4 ※2列目のデータは長くなってしまう為、3行に分けています。規則性はありません。 やりたいことは、まず1行目の区分を割り当てて、localtimeで当日の日付から2行目の範囲を絞って 3行目の結果区分を得たいのですが、どうやればよいのか教えて下さい。 現在は、CSVの形式がきちんと決まっていないので、","のように範囲を指定していますが、 CSVの形はこれ以外でも構わないので、どうか知恵を貸して下さい。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • PHPでcsvファイルを読みチェックを行う

    PHPの初心者です。よろしくお願いします。 やりたいことはCSVファイルを一行ずつ読んで 条件を満足させているかをチェックする機能です。 例: 00658,658,1,1,0,50,60,1 00658,658,1,1,0,50,60,1, 00658,658,1,1,0,50,60,1, 00658,658,1,1,0,50,60,1 00658,658,1,1,0,50,60,1 00658,658,1,1,0,50,60 00658,658,1,1,0,50,60,1 00658,658,1,1,0,50,60,1 上記のようなCSVファイルを一行ずつ読んで ガンマの数、またはガンマ区切りのカウント数を 判断の条件としてチェックを行います。 決めた数より多かったり少なかったりする行は 表示する機能を完成させたいですが どなたか詳しいかたがいらっしゃるんであれば 教えていただきたいです。 いまのところはCSVファイルを全部読んで 全部出力することはできました。またsplitを使って その数を数えようと思ったんですがなかなかうまくいきません。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【詳しい方HELP】CSV取込、並び変えマクロ

    CSV取込により、添付画像のフォーマットに値で貼り付けし、昇順に並び変え、 印刷が出来るマクロが出来ないか考えていますが、何から手をつけていいのか分からない ため、詳しい方ご教授お願いします。 ■したいこと (1)CSVを取込し、値で添付のようなフォーマットに貼り付けしたい  6行目でいうと、CSVのそれぞれの以下のセルの値がエクセル表の以下のセルに  値で貼り付くようになります。  ※エクセル表は5行目がタイトル行になります。  ※コピー後の貼り付けは値で貼りつけしたい       エクセル表 B6 C6 D6 E6 F6 G6  CSV   A2 B2 E2 F2 I2 L2 (2)昇順に並び変えをしたい  G列は数字になりますので、昇順で並び変えをしたい (3)値が入っている範囲で印刷をしたい。  CSV取込によりセットした値の印刷範囲で自動で印刷するようにしたいです。 すみませんが、宜しくお願いします。

  • 複数のcsvファイルを1つのEXCELファイルにマージするVBAを教えてください

    csvファイル数は700~1000個程度でひとつのフォルダに格納されています。 このファイルをEXCEL形式で開くと、1行目にフィールド名(A~Z列で固定)、2行目以降にデータが入っています。行数はファイルにより1~100行程度で変動します。 このファイルを1つのエクセルファイルの同一シートに結合(マージ)するVBAがほしいです。 ここで、(できればですが)EXCELにマージするにあたり、1行目のみフィールドの値、2行目以降にそれぞれのcsvの2行目以降データの値を入れていくようにしたいです。つまり、フィールド名の行が何行も出てくるのを避けたいです。 申し訳ございませんが、ご指導いただけたら幸いです。よろしくお願いします。

  • CSVデータの並び替えについて

    はじめまして! 表記のとおり、CSVファイルのデータを以下のように整形して新しいCSVファイルを作成したいと考えています。 プログラミングはperlとPHPを多少かじったくらいですが、それらで有効なスクリプトを作成することは可能でしょうか?? ■元データの例 "sakura","5","6","2" "kiri","5,"3","10" "bara","5,"3","10" ■新しいCSVファイルの例 "bara","5,"3","10" "tanpopo","0","0","0" "sakura","5","6","2" "kiri","5,"3","10" 1番初めの列をキーとして、並び替える。 (並び順はあらかじめ決まっている。) 元データに存在しないキーは、2列目以降の値に0を入れて行を挿入する。(上記例ですとtanpopoが当てはまります) どなたかヒントだけでもいいので、ご教示頂けると幸いです。 よろしくお願いします。