Python 移除同一檔案內重複的行列字串

一個純文字檔裡面, 每行一個字串, 要將重複的字串移除, 要怎麼做比較快?

  • 原始檔案: data.txt

    aa
    bb
    cc
    aa
    cd

於 Shell 可以使用: cat data.txt | sort | uniq # 把沒有重複的資料印出來.

註: shell 的 uniq 需要將相同的資料放在隔壁列, 才可以使用, 所以需要 sort + uniq, 檔案很大的話, 避免掉 sort, 可以將速度可以快很多.

Python 移除同一檔案內重複的行列字串

下述程式是針對檔案每列的資料不要重複為主, 移除重複的資料用.

  1. vim uniq.py
    #!/usr/bin/python
    file = open('data.txt', 'r')
    data = {}
    try:
        for line in file:
            data[line.strip()] = 1
    
        for line in iter(data):
            print line
    
    finally:
        file.close()
  2. chmod +x ./uniq.py
  3. ./uniq.py # 就會印出不重複的行列資料
  4. 感謝 Toomore提供的簡短版本
    #!/usr/bin/python
    ''' ./uniq.py ./data.txt '''
    import sys 
    with open(sys.argv[1], 'r') as f:
        print ''.join(list(set([i for i in f])))

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Python 移除同一檔案內重複的行列字串〉中有 4 則留言

Toomore 發表迴響取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料