重複行の削除と並べ替えを正しく行う方法
重複行を削除するには、それより前の行と同じ内容の行をすべて取り除きます。ただし、「同じ」の基準を先に決めておく必要があります。完全一致だけを対象にするか、整形後に一致するものを対象にするかで結果が変わります。完全一致の削除は安全ですが、実際の重複の大半を見逃します。前後の空白を取り除き、大文字と小文字を区別しないようにすると、はるかに多くの重複が見つかります。メールアドレス、キーワード、商品コードのリストでは、多くの場合こちらが必要な方法です。
重複行を削除リストに重複がある無料で使う具体例
スプレッドシートからコピーしたメールアドレスの6行のリストを見てみましょう。
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
ここでは3つのことが起きています。1行目と最後の行は完全に同じ内容です。2行目はAの大文字・小文字だけが違います。3行目は末尾に目に見えないスペースがあります。それぞれのルールで残る行数は次のとおりです。
| ルール | 残る行数 | 理由 |
|---|---|---|
| 完全一致の重複を削除 | 5 | 最後の「anna」だけが1行目と完全に一致する |
| 空白を削除し、大文字・小文字を無視 | 3 | 一意のアドレスは anna、ben、cara の3つだけ |
実際の運用では、メールアドレスは大文字・小文字を区別しないのが一般的です。そのため、この例では2つ目のルールが適切です。リストが乱雑なWebページから取り出したものなら、先にメール・リンク抽出を使い、実在するアドレスだけを重複削除の処理に回しましょう。
注意したい似た行
似た行とは、コンピューターからは違って見えても、人にとっては同じ意味を持つ行のことです。よくある原因は次のとおりです。
- 大文字と小文字:「Blue Widget」と「blue widget」。
- 行頭や行末の空白:エディターでは見えないことが多い。
- ノーブレークスペースなどの非表示文字:通常の空白と同じに見えます(非表示文字で詳しく説明しています)。
- 句読点の違い:「e-mail」と「email」。
- 複数形:人が判断すべき問題で、ツールで自動的に統合すべきではありません。
リストの整理は、次の順序で行うとよいでしょう。まず空白を削除し、次に大文字・小文字の違いに意味がない場合は区別をなくし、最後に重複を削除します。元のリストは必ず保存しておき、テキスト比較で2つのリストを比べて、何が削除されたかを確認してください。
大文字と小文字が重要な場合
大文字と小文字を無視するのが常に安全とは限りません。商品コード、Linuxのファイル名、一部の識別子では大文字と小文字が区別されるため、「AB-101」と「ab-101」は別の商品かもしれません。大文字と小文字の違いだけで項目をまとめる前に、リストを読み込ませる先のシステムがそれらを同じものとして扱うかどうかを確認してください。
通常の並べ替えと自然順の並べ替え
数字を含む項目のリストを並べ替えると、予想外の順番になることがよくあります。通常の五十音順・アルファベット順の並べ替えでは、文字を1文字ずつ比べます。そのため「1」は「2」より前に来るので、「item10」は「item2」より前に並びます。
3つの項目で違いを見てみましょう。
- 通常の並べ替え:item1、item10、item2
- 自然順の並べ替え:item1、item2、item10
自然順の並べ替えでは数字を数値として比べるため、2は10より前に来ます。10が2より前に来る理由では詳しく説明しています。ファイル名、棚の番号、バージョン番号、末尾に数が付いたものには自然順を使いましょう。人名や単語など、人が普段見慣れた順番で並べたい場合は通常の並べ替えを使います。自分のリストで両方の順番を比べるには、行の並べ替えにリストを貼り付け、「A→Z」と「数字」を切り替えてみてください。
さらに、次の2点も役立ちます。
- 並べ替えても重複は削除されません。先に重複を削除してから並べ替えてください。そうしないと、重複した行が並んで見やすくなるだけで、削除はされていません。
- リストに意味があるなら、元の順番を保ちましょう。手順のリストや順位表は、そもそも並べ替えるべきではありません。
最初に出現した行を残す
重複を削除するとき、多くのツールは各行の最初の出現を残し、後から出てきたものを削除します。これは、行に名前や日付などの追加情報が含まれている場合に重要です。最初の行が古い情報だった場合は、削除する前に日付で並べ替えるか、重複を手作業で確認してください。
結果を確認する
削除の前後で行数を数えてください。メールアドレスの例では、6行が一意の3アドレスになったので、3行が削除されました。予想より行数が少ない場合は、削除された行を確認しましょう。重複の削除は行全体を比べるため、行形式の一覧で同じ名前の別人がいる場合や、タイトルは同じでもコードが異なる2つの商品がある場合は、コードを取り除くと同じに見えてしまいます。重複は、項目を定義するフィールドで判断し、項目を説明するだけのフィールドで判断しないようにしましょう。
fixmintでの使い方
- リストをあなたのリストに貼り付けます。1行に1項目です。
- 空白を削除はデフォルトでオンのままにします。大文字と小文字に意味がない場合のみ大文字・小文字を無視をオンにします。
- 空行も削除する場合は空行を削除をオンにします。
- 順序を選びます:元の順序を維持、A→Z、数字のいずれか。
- 結果をコピーするか、.txtをダウンロードを使います。
特殊なケース
- 空行。 空行が連続していると、重複とみなされることがあります。間隔として1行残したい場合は、空行の処理を別の手順として行ってください。
- 複数行のレコード。 重複の削除は1行ずつ処理します。各レコードが複数行にまたがっている場合、レコードが分割されて部分の順番が崩れることがあります。
- 非常に大きなリスト。 大きなファイルでも問題なく処理できますが、出力の行数と入力の行数を比べて、何が変わったかを把握してください。
よくある質問
重複行を削除すると、リストも並べ替えられますか?
必ずしもそうではありません。多くのツールは元の順序を保つため、順序が必要な場合は別途並べ替えてください。
並べ替えると、item10がitem2より前に来るのはなぜですか?
通常のアルファベット順の並べ替えは1文字ずつ比べ、「1」は「2」より前に来るためです。数字を数値として比べる自然順の並べ替えを使ってください。
重複したメールアドレスを削除するとき、大文字と小文字は無視すべきですか?
通常は無視して構いません。メールアドレスは実際には大文字・小文字を区別しないものとして扱われるためです。大文字と小文字で意味が変わる識別子については、無視しないでください。
英語原文をもとに、AIの支援を受けて翻訳しています。
コメント
まだコメントはありません。最初のコメントを書いてみましょう。


