- ベストアンサー
CSVファイルの特定行の削除
CSVファイルの特定行を削除するということは可能なのでしょうか? 可能であれば教えて頂けないでしょうか? お願いします。
- dmn
- お礼率31% (10/32)
- Visual Basic
- 回答数6
- ありがとう数0
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
書き換えるというよりは、 その行を除いて別のファイルへコピーするという方法が一般的ですね。 例:AをCSVファイルだとすると、 1.Bという空のファイルを生成する。 2.Aから1行ずつ読みBへ1行ずつコピーする。 ⇒削除したい行はコピーしない。 3.Aの最後行まで達したらAを削除し、BをAにリネームする。 こんな感じです。
その他の回答 (5)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
テキストのままで、カンマ区切りなら無理です。 一度DBに取り込んで削除して吐き出すことならできますが・・・ 固定長なら ファイルを変数に読む(InputではなくGETでよむ) 特定行を探す 固定長だから1行のバッファ領域が決まっているので、その分を抜いてメモリコピーする ファイルに落とす。 ・・・それ以外の方法は#1さんの方法しか・・・
- imogasi
- ベストアンサー率27% (4737/17068)
CSVファイルはシーケンシャル・ファイルです。内容+CR+LF(CR+LFがないものも多い)が順次続いています。だから削除したいところをブランク+CR+LFにしても、内容がブランクになっただけでその後のレコードが前につめられるわけでは有りません。 昔から大型コンピュターで磁気テープを使ってシステムが作られていたときにも、たった1レコードを削除や追加するときも、新しいアウトプットテープを掛けて、インプットテープを全レコード読んで削除するレコードをとばしてそれ以外をアウトプットテープに書いたことを思いだしました。 ただシステム全体で、第一フィールドを「死にサイン」に設定し、削除したいとき、「死にサイン」フィールドに(例えば)「1」を書きこみます。 そしてそのファイルを使うあらゆるプログラムで「死にサイン」が1なら読み飛ばす約束にする。但し他人にそのファイルを渡す時はその申し会わせは有効でない。 こう言う不便さから、思う場所に追加出きるためにファイル構造が順ファイル以外に考えられています。
- Pesuko
- ベストアンサー率30% (2017/6702)
エディターで一行抹消は駄目ですか?
- todo36
- ベストアンサー率58% (728/1234)
リッチテキストボックスあるいはGrid系コントロールを 使えば出来るであろう。 しかし、No.1の方法がベストだと思いますが..
- y_herohero
- ベストアンサー率30% (72/239)
残念ながら無さげです…。
関連するQ&A
- PHPでCSVファイルの特定行のみ表示
PHPでCSVファイルを読み込ませるにあたり、「クエリで指定した特定の1行だけ」を取りだしたいと考えています。 下記だと、1行目からクエリで指定した特定行までの抽出が可能です。 hoge.php?repert=5 → 1から5行目までが表示される。 従い、下記から特定行より上の行を削除すれば、当方が考えている「クエリで指定した特定の1行だけ」を取りだすことになりますが、その方法がわかりません。 ご教示いただきたくお願いいたします。 <?php $repeat = $_GET['repert']; $fp = fopen("file2.csv", "r"); $count = 1; while ($data = fgetcsv($fp, 10000)) { if ($count > $repeat) { break; } print <<<EOD $data[0]・$data[1]・$data[2]<br> EOD; $count++; } fclose ($fp) ?>
- ベストアンサー
- PHP
- CSVファイルの行が突然消える
あるデータを抽出し、それをCSVファイルで取り込み、1つ取り込む ごとにCSVファイルが1行ずつ増えていきます。 適当な時期に、何行かたまった行を一気にAccessを用いてさらに取り込み ます。(取り込むのみ) あるとき、CSVファイルを開くと突然CSVファイルの行が減って いるのです。 何が起きているのでしょうか? Accessに何かマクロとか組んであって突然消えるのでしょうか? Accessを開く前と開いた後(取り込んだ後)で、特にCSVファイル に変更はありません。 あるとき突然CSVファイルを開くと昨日まであった行が突然 消えてしまうのです。(いつ起こるのか予測できていません。) CSVファイルにはマクロが組んであるようには見えません。 何かわかればお願いします。
- ベストアンサー
- オフィス系ソフト
- CSVファイルの項目行を削除して結合するには?
お世話になります。m(__)m 2000行ほどのCSVファイルが数個あります。 このCSVデータをすべてひとつのファイルに結合したいのですが、 ・それぞれのファイルの1行目にある項目データを削除したい。 ・結合後の1行目には項目名を残したい。 ・可能であればコピーバッチのようなもので作成したい。 と、このように思っております。 どのような手があるか教えて下さい。
- ベストアンサー
- その他(プログラミング・開発)
- 【PHP】CSVファイルの特定行を書き出す
PHPでCSVファイルを読み込み、特定行のみを別のCSVファイルに書き出したいと思います。 作りたいものは、 http://example.com/file.php?repert=5 とすると、「002.csvファイルの5行目のみ」を「003.csv」に書き込むというものです。 下記で作りましたが、 Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\file.php on line 32 になります。 指摘された32行は ?> の行です。 ググると改行コードのトラブルのようでしたのでCR+LF CR LF と試しましたが、改善されません。 どこが不味いかご教示戴けませんでしょうか? 宜しくお願い致します。 <?php $repeat = $_GET['repert']; $inFile = '002.csv'; // 抽出元ファイル $outFile = '003.csv'; // 結果ファイル $inFp = fopen($inFile, 'rb'); $outFp = fopen($outFile, 'w'); while ($data = fgetcsv($fp, 10000)) { if ($count == $repeat) { { $outLineArray = array( 0 => $data[0], 1 => $data[1], 2 => $data[2] ); fputs($outFp, implode(",", $outLineArray) . ""); } } fclose($inFp); fclose($outFp); exit(); ?>
- 締切済み
- PHP
- ファイルの中の特定の行だけを削除したい
あるファイルの特定の行だけを削除したいのですが、高速に行う方法はありませんか? とあるファイルがあり、これは数行~数万行にも及ぶ可能性のある大規模なファイルです。 このファイルの、特定の行を検索してその行だけ削除し、空いてしまった行は詰めたいのですが、どのようにすれば高速に行えますか? かなり遅い方法だと、 xxx = "hoge\n" arr = [] f = open("file") f.each{|line| if line != xxx then arr<<line end } f.close open("file", "w").puts arr.join() などが考えられるのですが、遅すぎて使えないはずです。 速度が求められる処理のため、困ってます。 もしご存じの方がいらっしゃいましたら、教えて頂けませんか?
- ベストアンサー
- Ruby
- CSVファイルの特定の行だけを読み込みたいです。
例えば以下のようなCSV形式のデータが10000行あるとします。 1,10,15,3 2,1,5,1 70,2,4,2 2,4,5,6 11,1,9,9 ・・・ 上記ファイルから、例えば9999行目を取得したい場合、 現在は以下のような手順で9998行をループで読み込んでから、 9999行目を取得しています。(エラー処理などは省いています) BufferedReader br = new BufferedReader(new FileReader("hoge.csv")); for( int i=0; i<9998; i++ ){ br.readLine(); } System.out.println("9999行目="+br.readLine()); ただし、上記の通りループを9998回まわし、 データを1行ずつ読み込むのは非常に効率が悪いです。 できれば、br.readLine(9999); といった感じで行数を直接指定できる方法があるならば、 無駄な処理を省けて見栄えも速度も良くなると思うのですが、 Javaの標準のクラスではこういったことは可能なのでしょうか? 私なりに調べてみたのですが調べ方が悪いのか知識が及ばないため、 こちらで質問させていただきました。 もしご存知の方がおられましたらアドバイスいただけますと助かります。 よろしくお願いします。
- ベストアンサー
- Java
- CSVファイルの結合(行項目を削除)
5,000行ほどのCSVファイルが6つあり、これらを結合して一つのCSVファイルにまとめたいと考えております。 行のタイトル項目は6つのファイルで全て同じため、結合後にタイトル行は一つにしたいです。(一番上の行のみタイトル項目を表示) 何度も同じ操作をする想定のため、できるだけ簡単にできる方法を探しています。 有料ソフトでも良いので、簡単に手間がかからず実現できる方法を教えて頂けると助かります。 宜しくお願い致します。
- 締切済み
- その他MS Office製品
- gccコンパイラのプログラムでファイルの特定行削除をしたい
初心者な質問で申し訳ありません。。 Linuxでプログラムの勉強をしています。 その中でファイルにデータを書込み、 あとでそこを検索してその行を削除するというプログラムを作成しており、そのためのCの関数リファレンスやいくつか書籍を調べてみたのですが、 ファイルから特定の行を削除するという具体的な方法を見つけることができませんでした。 今のところ現実的なのは 1.特定の行より前の行までを別のファイルに書き出し。(コピー) 2.特定の行より後ろの行以降を別のファイルに書き出し(コピー) 3.コピー元のファイルを削除する。 4.コピーしたファイルを3.で削除した名前に変える。 なのですが、これ以外の方法をご存知の方、御教授いただけますでしょうか? なお、Qtの勉強もかねてなのでコンパイラはgcc限定としております。
- ベストアンサー
- C・C++・C#
- CSVの3行目だけを…
はじめまして!Nakanoと申します。 えっと、以下質問になります。おねがいします。。 CGI/Perlを始めて1週間程度の素人なのですが、 CSVファイルをHTMLのテーブル表示させる 様にしたいなと思っています。 そこで用意したCSVファイルが5行と8列で カンマ区切りのみで構成されています。 このCSVファイルから3行目だけを抽出する方法 ってありますでしょうか? 1行目のみ表示や1行目以外の2行目以下全てを表示 させたりは出来たのですが、3行目だけを表示するの がどうしても分かりませんでした・・・・・ 何方様か。よろしければその辺の所を詳しくご指導 いただけないでしょうか? よろしくおねがいします。
- ベストアンサー
- Perl
補足
ありがとうございます。 その方法は考えていたんですが・・・。 ほかのやり方って無いんですかね?