• 締切済み

可変CSVから固定CSVへのファイル加工

perlでCSVファィルの加工するプログラムを作ろうと思っております。 プログラム初心者な為どれから手を付ければ良いのか 判りません。 宜しければ サンプル等作っていただければありがたいです。 1.指定されたフォルダの中の 最新更新日付のファイルを読み込みむ 2.5分置きに可変CSVで出力されるデータを出力を 10分単位の固定CSVへ出力する 3.出力の際には以下の固定数字、時間、文字、数字等を入れ 加工した上で固定系CSVの出力をしたいです。 ・固定の数字20450△△△, ・固定の数字 01,   ・年月日時間    YYMMDDhhmm, ・固定数字 01, ・固定文字 TP, ・固定数字 01, ・固定文字 +か-,  元データが△△△19.2の場合は+を出力  -19.2の場合は-を出力   4カラム目を19.5 の場合△△195 ・固定文字 TA, ・固定数字 01, ・固定文字 +か-,  元データが△△△12.2の場合は+を出力  -12.2の場合は-を出力   4カラム目を19.5 の場合△△195 入力のファイル名 20110301.csv ファイルの中身 17549,2011/3/25,0:00:00,19.5,12.2 17550,2011/3/25,0:05:00,19.6,12.2 17551,2011/3/25,0:10:00,19.5,12.2 17552,2011/3/25,0:15:00,19.5,12.2 17553,2011/3/25,0:20:00,19.4,12.2 17554,2011/3/25,0:25:00,19.4,12.2 17555,2011/3/25,0:30:00,19.4,12.2 17556,2011/3/25,0:35:00,19.3,12.2 17557,2011/3/25,0:40:00,19.3,12.2 17558,2011/3/25,0:45:00,19.2,12.2 17559,2011/3/25,0:50:00,-19.2,12.2 ↓ 出力のファイル名 10_200203.dat 20450 , 01,201103250010,1,TP,1,+ 195,TA,1,+ 122 20450 , 01,201103250010,1,TP,1,+ 195,TA,1,+ 122 20450 , 01,201103250020,1,TP,1,+ 194,TA,1,+ 122 20450 , 01,201103250030,1,TP,1,+ 194,TA,1,+ 122 20450 , 01,201103250040,1,TP,1,+ 193,TA,1,+ 122 20450 , 01,201103250050,1,TP,1,+ 192,TA,1,+ 122

  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

とりあえず、正しい出力結果がほしいです。 入力ファイルの情報に提示された条件を適用しても出力ファイルの情報にはならないと思います。 出力情報のおかしいところ - 5分 → 10分 丸めるときは先優先であとのやつは削除でよいの? - 19.2 とか12.2の小数点はどこへ消えたの? - 00:50出力の+-の符号間違えてる? - 19.5のとき符号いらないんじゃなかったの? ここからは、コーディングの基本となりますが こういった変換系処理の場合、 自分がプログラムになった気持ちで一つ一つ順番に変換してみてください。 どうすれば、出力結果ができあがるか、変換条件と自分した変換が一致しているのか 検証してみるとよいです。 自分の手操作で変換が出来るようになれば、あとは、その手操作の部分を列挙することで プログラムができあがると思います。 イメージ的に必要そうなのは 1. 行単位の読み込み 2. カンマ区切りにするための split() 3. 丸めるための文字列置換(時分秒をhhn000) 4. 固定長出力用のsprintf()

関連するQ&A

  • 固定長データ加工

    固定長データをCSVに生成する際、表示させたいデータが、 スキップされ文字コードとして認識されないため 固定長データの加工のノウハウを勉強したいと思っています。 例えば固定長データをバイナリエディタでチェックして 文字コードと認識されない領域をデータ加工にて、「0000」のところに→「F0F0」を埋め込む作業等は どのようなプログラム言語、またはツールなどを使用して開発するのが理想でしょうか?? アドバイスどうぞよろしくお願いいたします。

  • CSVファイルをExcelで開くとき

    CSVファイルをExcelで開くと、 12桁以上の数字が値として入っていた場合、 自動で対数表示されてしまいます。 現在、16桁の数字を扱っているのですが、 16桁を対数表示してしまうと、 1の位の数字が必ず0になってしまい、 元データの値を失ってしまいます。 CSVを開くときに、全セル文字列で開くことは出来ませんか?

  • CSVファイルの加工について

    CSVファイルの加工について エクセル2000なのですが ,"a","s","d"のように""で区切られたデータ(CSV)をエクセルで開いて編集保存すると ,a,s,d,のデータになってしまいます。 ""のついたデータのままにするにはどうすれば良いのでしょうか?

  • csvファイルを出力する簡単なプログラム

    初心者です。 csvファイルを読み込んで、それを加工(列を増やして文字を決まった列を挿入)したcsvファイルを出力する簡単なプログラムを模索しているのですが、どのようなものを作ればいいのかわかりません。こういうものはどういう風に考えて作っていくものなのか、大まかに教えてもらえないでしょうか。まず、csvファイルを読み込むという作業をどのようにコンピュータにやらせればいいのでしょうか? ちなみに『やさしいJAVA』(初歩の方)は一律読破しました。 お願いします。

  • CSVデータの加工

    CSVデータの項目数が多くアクセスで加工できません。 また データ量も多いため,一般のフリーのCSV閲覧ツールでは加工できません。 何か良い方法ないでしょうか? 項目数が600余りあります。 何番目の項目を抽出し新規ファイルに出力するようなツール無いでしょうか?

  • ExcelのCSVファイル出力について

    Excelが出力したCSVファイルを扱うプログラムに関する質問です。 Windwosの[コントロールパネル]⇒[地域と言語のオプション]で、 小数点の記号を「.(ピリオド)」から「,(カンマ)」に変更しました。 するとExcelからCSVファイルを出力したときの各データの区切り文字が 「,(カンマ)」から「;(セミコロン)」に変わるようなのですが、 これに対応できるプログラムを作りたいと考えています。 CSVファイルの区切り文字は、Windowsのロケール情報として プログラム上から取得可能なのでしょうか?

  • C言語 CSVファイルの読み込み

    C言語でCSVファイルから数字を読み込み、それを計算するというプログラムを作りたいのですが、CSVファイルについて全く知識が無く、加えてCSVファイルを利用したプログラムを作るのが初めての為、勝手がわかりません。 まずCSVファイルというのは、 1.2,2.3,3.4 4.5,5.6,6.7 7.8,8.9,9.0 といった数字(文字列)をカンマで区切ったテキストファイルですよね? それをどのようなプログラムで読み込むのでしょうか? 例えば、上記の数字を読み込み、 a. 1.2+4.5+7.8=x b. 8.9-5.6-2.3=y c. 3.4*6.7*9.0=z と計算する場合のプログラムを教えていただきたいです。 よろしくお願いします。

  • MACに出力された拡張子CSVのファイルの加工

    今までWindowsのパソコンしか使った事がないので教えてください。 MACに出力されたCSVファイルを一部修正して、再度CSVファイルとして取り込みたいのですが、CSV出力されたファイルをMAC上で加工すると、拡張子のないファイルが新たに出来上がりました。 修正後のファイルをCSVファイルとして取り込みたいのですが、方法がわかりません。 よろしくお願いいたします。

    • 締切済み
    • Mac
  • csvファイルについて

    javaで、csvファイルを読み取り、データベースにいれるツールを作成しています。 csvファイルを読み込む部分でつまづいてしまったので、どなたかご教授ください! 指定されたcsvファイルを一行ずつ取り込むのですが、一つの情報が2行以上になってしまうデータがいくつかあり、ファイルチェックとして、1つ目のカラムは何文字のものだとかしているけれども、その前の行の続きに当たる行が、その条件から外れてしまい、エラーになってしまいます。(当たり前ですが、、、) なぜ、csvファイルが一行に収まらないのかが、わかずですし、それを一行として読み込むことができるのかが不明で困っております。   原因や対処法が分かれば、教えていただければと思います。 よろしくお願いします。

  • Excelでゼロプレスした数値のあるCSVファイルを正しく読みたい。

    自作のアプリケーションプログラムから出力した、CSVファイルがあります。 このデータの中に、ゼロプレスした固定サイズの数値があります。例えば、000321です。 このCSVファイルをExcelで読み込ませたのですが、321と表示されます。 この0が落ちるのを防ぐ方法はないでしょうか? 但し、Excelは表示に利用するだけなので、起動以外の操作はできません。また、テキスト読み込みを行って文字列として設定するような、操作をする事もできません。 CSV以外に、このフォーマットだとOKなどの情報でも良いです。