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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix 並標籤為 , 。將永久鏈結加入書籤。

Python 移除同一檔案內重複的行列字串 有 4 則回應

  1. 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])))

  2. Toomore 說道:

    可以這樣很噁心的寫(修正)
    http://codepad.org/BBWB4fzx

發表迴響