Pythonコード
以下のコードを「Get_unique_line」として保存。
import sys def main(): #引数の確認 args = sys.argv if(len(args) < 2): print("引数:対象ファイルパス") return False Get_unique_line(args[1]) def Get_unique_line(input_path): #出力用データ output_list = list() #データ読み込み input_file = open(input_path, "r", encoding="UTF-8") input_list = input_file.readlines() input_file.close() #データの分類 for data in input_list: if not data in output_list: output_list.append(data) #データの出力 output_file = open(input_path + "_unique_line.txt", "w", encoding="UTF-8") for data in output_list: output_file.writelines(data) output_file.close() if __name__ == "__main__": main()
動作確認
以下のテキストファイルを「sample.txt」として用意する。
注意:改行コードの有無は特に判別していないので、最後に改行がないと一番最後の単語は残ります。
プレゼント モニュメント ソロ 水蒸気 蚊帳 モニュメント 五里霧中 蚊帳 アブ タップダンス 水蒸気 蚊帳 頭脳 場所 アブ アブ タップダンス 場所 モニュメント ソロ
pythonファイルとテキストファイルが同じディレクトリにあるとして、次のように実行する。
python ./Get_unique_line.py ./sample.txt
実行すると「sample.txt_unique_line.txt」というファイルが作成され、内容は次のようになる。
プレゼント モニュメント ソロ 水蒸気 蚊帳 五里霧中 アブ タップダンス 頭脳 場所
最後に
1行に1単語ずつ書かれたテキストファイルから、重複する単語を除いたテキストファイルを作成する作業を数千ファイルやってほしいと言われたのでコードを書きました。
他にもやり方はいくらでもあると思うけど、自分的にはサクッと書けるからpythonが一番楽。
ちなみにファイル名取得をして、今回紹介したコードをファイル数分実行するラッピング関数を作ったので一瞬で終わりました。
コメント