データの日付でソートをしたい
データの日付でソートをしたいと思ってますが、うまくいっていません。
$kuchikm2の内容
1,8,,説明文,2010/07/06-01:27,1,,,,,,,
2,8,,紹介文,2010/07/18-02:27,1,,,,,,,
3,8,,コメント,2010/05/19-03:27,1,,,,,,,
4,8,,文言,2010/06/20-04:27,1,,,,,,,
ソートした結果@sorted
2,8,,紹介文,2010/07/18-02:27,1,,,,,,,
1,8,,説明文,2010/07/06-01:27,1,,,,,,,
4,8,,文言,2010/06/20-04:27,1,,,,,,,
3,8,,コメント,2010/05/19-03:27,1,,,,,,,
(perlソース)
略
#sortロジック
use warnings;
my @lines = $kuchikm2;
print @lines, " a\n";
my @sorted = map { $_->[4] }
sort { $a->[0] <=> $b->[0]}
map { [(split q{,}, $_)[4], $_] }
@lines;
print @sorted, " b\n";
(ここまで)
以前ソートで質問したときに、数字でないといけないと言われたような気がしています。
お手数かけます。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
> my @lines = $kuchikm2;
上の文では行単位で配列に入らず、要素1の配列になります。まずは、この部分を直すのが先決かと思います。
use warnings;
my @lines = map { "$_\n" } split /\n/, $kuchikm2;
print @lines, " a\n";
my @sorted = map { $_->[1] }
sort { $b->[0] cmp $a->[0]}
map { [(split /,/, $_)[4], $_] }
@lines;
print @sorted, " b\n";
No.1
- 回答日時:
日付がこのフォーマットなら, 単純に文字列として (cmp で) 比較すれば十分ではないかな.
あと, Schwartz変換が間違ってる. さらにいうと, 「Schwartz変換は必ずしも効率的ではない」という指摘もあったりします.この場合だと
my @dates = map { (split /,/)[4] } @lines;
my @sorted = @lines[sort { $dates[$a] cmp $dates[$b] } 0 .. $#lines];
とする手もあります.
この回答への補足
回答ありがとうございます。
cmpて゜比較ですね。早速やってみました。
データ
1,8,,説明文,2010/07/06-01:27,
2,8,,紹介文,2010/07/18-02:27,
3,8,,コメント,2010/05/19-03:27,
4,8,,文言,2010/06/20-04:27,
perl実行結果
1,8,,説明文,2010/07/06-01:27,
2,8,,紹介文,2010/07/18-02:27,
3,8,,コメント,2010/05/19-03:27,
4,8,,文言,2010/06/20-04:27,
結果の表示が今回初めて表示されましたが、ソートされていませんでした。
(perlソース)
略
#sortロジック
use warnings;
my @lines = $kuchikm2;
print @lines, " a\n";
my @dates = map { (split /,/)[4] } @lines;
my @sorted = @lines[sort { $dates[$a] cmp $dates[$b] } 0 .. $#lines];
print @sorted, " b\n";
(ここまで)
あと少しだと思うのですが、どこがどう問題なのかがわかっていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Excel(エクセル) エクセルVBA オートフィルタでの絞り込みと並び替えについて 1 2023/07/08 13:08
- その他(プログラミング・Web制作) sortの優先キーについて(スプレッドシート) 1 2023/01/17 17:59
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- その他(Microsoft Office) Excel関数での質問です 1 2022/11/22 13:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
P.Cのシングルチューナーとダブ...
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
Perlで、「が」を、「...
-
perlをバージョンアップしたら...
-
TeraPadエディターの操作方法に...
-
perl 正規表現でエラー
-
PerlでUTF-8のファイルの文字列...
-
アルファベットに付いて質問し...
-
Perlのエラーについてご教授く...
-
perlでリテラル値はメモリにど...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の中に重複文字列があるか...
-
C言語のバイナリモードでのfsca...
-
データの日付でソートをしたい
-
perlで複数行のデータを自由に...
-
perl-cgi 文字の長さでソートし...
-
Visual C++を用いたシリアル通信
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
DOSコマンドで、標準出力を出力...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAでCSVファイルを途中行まで...
-
window.open でのファイル指定方法
-
VBAで巨大なファイルの途中から...
-
Perlで特定行から特定行までを...
-
ReadLineでの読み出し行を指定する
-
エクセルVBAで素数だけを出力す...
おすすめ情報