python如何去除重复行并分别统计重复的行数?已有去除重复的代码
假如1.txt:小明:90张力:79胡丽:81胡军:100王朝:56胡丽:81小明:90王朝:56胡丽:81胡丽:81结果类似这样:小明:90,2张力:79,1胡丽:81...
假如1.txt:
小明:90
张力:79
胡丽:81
胡军:100
王朝:56
胡丽:81
小明:90
王朝:56
胡丽:81
胡丽:81
结果类似这样:
小明:90,2
张力:79,1
胡丽:81,4
胡军:100,1
王朝:56,2
去除重复的代码如有更好的也可用自己的,热心网友给的:
lines_seen = set()
outfile = open("2.txt", "w")
for line in open("1.txt", "r"):
if line not in lines_seen:
outfile.write(line)
lines_seen.add(line)
outfile.close()
另外1.txt非常大,注意效率。 展开
小明:90
张力:79
胡丽:81
胡军:100
王朝:56
胡丽:81
小明:90
王朝:56
胡丽:81
胡丽:81
结果类似这样:
小明:90,2
张力:79,1
胡丽:81,4
胡军:100,1
王朝:56,2
去除重复的代码如有更好的也可用自己的,热心网友给的:
lines_seen = set()
outfile = open("2.txt", "w")
for line in open("1.txt", "r"):
if line not in lines_seen:
outfile.write(line)
lines_seen.add(line)
outfile.close()
另外1.txt非常大,注意效率。 展开
展开全部
python的速度效率是不高的,如何对速度要求比较高的话建议可以用c来写。
我写了这个代码,python2.6+windows xp测试通过。
希望能帮到你~
===================================================
a=[] #初始化要用到的列表a,用于记录原始行信息
b=[] #初始化要用到的列表b,用于记录结果数据,由两项构成。前一项为行信息如“小明:90”,后一项为该行对应的出现次数如2
f1=file("1.txt", "r") #打开1.txt文件
for line in f1:
a.append(line) #将1.txt文件每一行作为一个元素,存入列表a
f1.close
for n in a: #遍历a中每一项(记为n),即1.txt中每一行
flag=1
for i in range(0,len(b)):
if n == b[i][0]: #n与列表b中的每一项对比,如果有相等的:
b[i][1]=b[i][1]+1 #那么对应的出现计数加1
flag=0
break
if flag==1: #如果前面的比对没有一个相等的,即该行是第一次出现:
b.append([n,1]) #那么在列表b中添加改行为新的一项
f2=file("2.txt", "w") #打开2.txt文件,用于输出
for n in b: #输出格式为:行信息 (tab) 出现次数 (回车)
f2.write(str(n[0][0:-1]) + "\t")
f2.write(str(n[1]) + "\n")
f2.close
print "Finished" #完成
我写了这个代码,python2.6+windows xp测试通过。
希望能帮到你~
===================================================
a=[] #初始化要用到的列表a,用于记录原始行信息
b=[] #初始化要用到的列表b,用于记录结果数据,由两项构成。前一项为行信息如“小明:90”,后一项为该行对应的出现次数如2
f1=file("1.txt", "r") #打开1.txt文件
for line in f1:
a.append(line) #将1.txt文件每一行作为一个元素,存入列表a
f1.close
for n in a: #遍历a中每一项(记为n),即1.txt中每一行
flag=1
for i in range(0,len(b)):
if n == b[i][0]: #n与列表b中的每一项对比,如果有相等的:
b[i][1]=b[i][1]+1 #那么对应的出现计数加1
flag=0
break
if flag==1: #如果前面的比对没有一个相等的,即该行是第一次出现:
b.append([n,1]) #那么在列表b中添加改行为新的一项
f2=file("2.txt", "w") #打开2.txt文件,用于输出
for n in b: #输出格式为:行信息 (tab) 出现次数 (回车)
f2.write(str(n[0][0:-1]) + "\t")
f2.write(str(n[1]) + "\n")
f2.close
print "Finished" #完成
2012-02-14
展开全部
这个可以自己做,不是很复杂
追问
关键是思路
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询