一個純文字檔裡面, 每行一個字串, 要將重複的字串移除, 要怎麼做比較快?
- 原始檔案: data.txt
aa
bb
cc
aa
cd
於 Shell 可以使用: cat data.txt | sort | uniq # 把沒有重複的資料印出來.
註: shell 的 uniq 需要將相同的資料放在隔壁列, 才可以使用, 所以需要 sort + uniq, 檔案很大的話, 避免掉 sort, 可以將速度可以快很多.
Python 移除同一檔案內重複的行列字串
下述程式是針對檔案每列的資料不要重複為主, 移除重複的資料用.
- 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()
- chmod +x ./uniq.py
- ./uniq.py # 就會印出不重複的行列資料
- 感謝 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])))
#!/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])))
排版有點悲劇…
http://codepad.org/iAlNYjkn
可以這樣很噁心的寫(修正)
http://codepad.org/BBWB4fzx
呵呵, 這種寫法很難懂阿~
感謝提供, 我把它補在文章的後面~ 🙂