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

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

  • 原始檔案: data.txt

    aa
    bb
    cc
    aa
    cd

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

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

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

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

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

作者: Tsung

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

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

發表迴響

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