質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Q&A

解決済

1回答

2949閲覧

fortran でcsvデータ読み込み 文字 数値 混ざり

hirochika

総合スコア8

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

0グッド

1クリップ

投稿2018/04/16 10:14

前提・実現したいこと

文字と数値が混在したcsv形式のデータから数値をfortranで読み込みたいです
例えば以下のようなcsvデータ
あ,,,1,
い,,,2,
う,,,3,
え,,,4,
お,,,5,

から数字の部分のみをq(4,i)として取り出したく
fortranでプログラムを書きました

おそらく列を読み飛ばす事ができれば良いと思うのですが
よくわかりません
よろしくお願いします。

発生している問題・エラーメッセージ

run-time error F6103: READ(C:\aaa.csv) - invalid REAL Press any key to continue

該当のソースコード

implicit none real::q(9999,9999) integer::i,j open(1,file="aaa.csv") open(2,file="bbb.csv") do 10 i=1,5 read(1,*) q(4,i) 10 continue do 20 i=1,5 write(2,40)Q(4,i) 40 format(f1.10) 20 continue stop end

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Fortran で csv ファイルを読む時は list-directed で読むのが基本ですが、落とし穴もあります。
list-directed とは * フォーマットのことです。

データの読み飛ばしには、安直には文字型のダミー変数を使えばいいです。
list-directed で読み込めば、コンマで区切ってくれます。

落とし穴は、list-directed には役付き文字があることで、「/」割り算記号はデータ終わりを意味し、数字と掛け算記号は「n*」、は続くデータの繰り返しを意味することです。例:(3*1.0) は 1.0,1.0,1.0,1.0 に同じとなります。

入力データによっては、問題が起きないとも限りません。日本語文字のコードがたまたまこれらの記号に重なるとか。また文法に細かく言うと、同じ dummy 変数を重ねて使うのも処理系によっては怒られるかもしれません。

でも大抵は大丈夫だから、心配しなくても大丈夫でしょう。

ソースプログラム

program test implicit none character(len = 80) :: dummy real :: x open(10, file = 'aaa.csv') do read(10, *, end = 99) dummy, dummy, dummy, x print *, x end do 99 continue print *, 'end of file' end program test

実行時出力

1.000000 2.000000 3.000000 4.000000 5.000000 end of file

投稿2018/04/17 01:38

curehoney

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirochika

2018/04/17 02:29

なるほどよくわかりました 助かりました あざっす
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問