![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在、Perlにて外部のcsvファイルを読み込み、"重複行"と"空白行"を削除するプログラムを作成しています。
重複行を削除する部分は
------
open(IN, "csvtime.csv");
@data = <IN>;
close(IN);
@data = grep {!$count{$_}++} @data;
open(OUT, "> csvtime.csv");
print(OUT @data);
close(OUT);
------
でできたのですが、空白行を削除する部分がわかりません。
申し訳ないのですが、お教えいただけないでしょうか。
また、空白行で最初の空白行は残すようにしたいです。
よろしくお願いいたします。
例)
読み出しデータ
-----
(ヘッダ1行目)
(ヘッダ2行目)
(ヘッダ3行目)
(必要な空白)
(ヘッダ4行目)
00:00:00,302
00:01:00,274
00:02:00,272
00:03:00,248
00:04:00,237
00:05:00,239
00:05:00,239
00:06:00,256
00:07:00,260
00:08:00,250
00:09:00,253
00:10:00,241
-----
加工後データ
-----
(ヘッダ1行目)
(ヘッダ2行目)
(ヘッダ3行目)
(必要な空白)
(ヘッダ4行目)
00:00:00,302
00:01:00,274
00:02:00,272
00:03:00,248
00:04:00,237
00:05:00,239
00:06:00,256
00:07:00,260
00:08:00,250
00:09:00,253
00:10:00,241
-----
No.2ベストアンサー
- 回答日時:
あれ、このコードで空白行削除されませんか?
読み出しファイルの「(必要な空白)」って最初の空白行ですよね?
>@data = grep {!$count{$_}++} @data;
これはハッシュに存在しないものだけ配列に格納してるんで、最初の空白行だけに整形されるはずですが。
空白行にひとつ以上のタブや半角・全角スペース文字が来たりしてたら動作しないとは思いますが。
実際のログファイルの容量が多く、手元になかったため、別のファイルを作成してテストをしていたのですが、
そのファイルにご指摘のように 空白 が入っていました。
実際のファイルを取り寄せ、実行したところ正常に動作していました。
ありがとうございました。
No.3
- 回答日時:
@data = <IN>;
――でデータを読み込んでるなら、空行が「\n」で表されてるので、
@data = grep {!$count{$_}++} @data;
――で、望み通り最初の空行だけが出力されると。
![「Perlで空白行を削除」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/64512_5497ee68461f4/M.jpg)
別の回答の返答にも書かせていただきましたが、テストのデータに空白が挿入されていたため、
正常に削除ができていませんでした。
実際にチェックまでしていただきありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーチェック、ファイルに特...
-
cgiのログの書き方
-
perlでcsvファイルを読む(ダブ...
-
Perlで特定行から特定行までを...
-
csvデータの開始行と最終行を全...
-
python renameについて
-
VBAで巨大なファイルの途中から...
-
batファイルでrenameができませ...
-
Perlでのファイル出力における...
-
csvファイルの横方向への改行に...
-
VBAでCSVファイルの特定行を書...
-
Pythonでegrep機能をつかいたい
-
awkスクリプトでダブルクォーテ...
-
csv出力
-
VBAでCSVファイルを途中行まで...
-
VB6.0でDB接続する際に切断時の...
-
ディレクトリ名を取得したい
-
FindFirstFileとFindNextFileで...
-
ファイルの一部を別のファイル...
-
ListBoxのデータを高速でファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで特定行から特定行までを...
-
Perlの初心者です。2重ループ...
-
ディレクトリ内のtxtファイル中...
-
Perlで空白行を削除
-
perlでcsvファイルを読む(ダブ...
-
Perlを利用してテキストフ...
-
ファイルの3行目までを出力したい
-
foreachの制御
-
Java CSVファイルをカンマごと...
-
Argument "\\\\n" isn't numeri...
-
エラーチェック、ファイルに特...
-
CSVデータの編集の際の重複チェ...
-
FTP接続時失敗時、接続先名をcs...
-
CSVファイルのデータの行数を取...
-
cgiのログの書き方
-
MATLAB std::exceptionエラー
-
VBAでCSVファイルを途中行まで...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
バッチファイルの作り方(CSV→...
おすすめ情報