#先排序,後取重
sort file.txt | uniq
#!/usr/bin/python
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def text_duplicate_byset(sourcepath, destpath):
sum = 0
sum_pre = 0
addrs = set()
with open(sourcepath, 'r') as scan_file:
for line in scan_file.readlines():
sum_pre += 1
# addr = get_addr(line)
# line.decode('utf8')
addrs.add(line)
scan_file.close()
with open(destpath, 'w') as infile:
while len(addrs) > 0:
sum += 1
infile.write(addrs.pop())
infile.close()
#print(addrs)
print(u"去重之前文字條數: "+str(sum_pre))
print(u"去重之後文字條數: "+str(sum))
return sum_pre,sum
#example
sourcepath = 'log.txt'
destpath = 'log_du.txt'
text_duplicate_bylist(sourcepath,destpath)
input&&output
#input:
你好你好
你好你好
你好你好
#output:
你好你好
#!/usr/bin/python
#coding:utf-8
#row代表以某一列為基準去重,預設為第1列
def text_duplicate_bylist(sourcepath, destpath, row = 0):
sum = 0
sum_pre = 0
addrs = {}
with open(sourcepath, 'r') as scan_file:
for line in scan_file.readlines():
line = line.split('\t')
sum_pre += 1
if len(line) < 2 :
continue
addrs[line[row]] = '\t'.join(line[row + 1:])
scan_file.close()
with open(destpath, 'w') as infile:
for key in addrs.keys():
tmp_str = addrs[key]
#while len(addrs) > 0:
sum += 1
infile.write(key + '\t' + tmp_str)
infile.close()
#print(addrs)
print(u"去重之前文字條數: "+str(sum_pre))
print(u"去重之後文字條數: "+str(sum))
return sum_pre,sum
#example
sourcepath = 'log.txt'
destpath = 'log_du.txt'
text_duplicate_bylist(sourcepath,destpath)
input&&output
#input,各列以 \t 分隔
你好你好 one
你好你好 one
你好你好 one
你好你好啊 one
#output:
你好你好 one
你好你好啊 one
finger print 文字去重
任何一段資訊文字,都可以對應乙個不太長的隨機數,作為區別它和其它資訊的指紋 fingerprint 只要演算法設計的好,任何兩段資訊的指紋都很難重複,就如同人類的指紋一樣。資訊指紋在加密 資訊壓縮和處理中有著廣泛的應用。string content2 卓爾防線繼續傷筋動骨 隊長梅方出場再補漏說起來卓...
文字如何去重?uniq awk
對於awk a 3 需要了解3個知識點 1 awk陣列知識,不說了 2 awk的基本命令格式 awk pattern 省略action時,預設action是,如awk 1 就是awk 1 3 var 的形式 先讀取var變數值,再對var值 1 以資料1 2 3 1 2 3 1 2 4 1 2 5 ...
hive 列表去重 Hive 資料去重
實現資料去重有兩種方式 distinct 和 group by 1.distinct消除重複行 distinct支援單列 多列的去重方式。單列去重的方式簡明易懂,即相同值只保留1個。多列的去重則是根據指定的去重的列資訊來進行,即只有所有指定的列資訊都相同,才會被認為是重複的資訊。1 作用於單列 se...