python写个脚本去除文本文件重复行(python 去除重复行)

python如何去除重复行并分别统计重复的行数?已有去除重复的代码

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]) + " ")

f2.write(str(n[1]) + " ")

f2.close

print "Finished" #完成

求助:如何用python脚本删除文本中的重复行(相同记录只保留一个)

:em06:

楼上的代码看不懂,能不能解释一下?

我的方案要短也可以,看下面:h,r,w

={},

file('data'),

file('newdata','w')w.write(reduce(lambda

x,y:x+y,

[i

for

i

in

r

if

h.get(i)==None

and

h.setdefault(i,

True)]))复制代码[

本帖最后由

retuor

2008-8-23

00:35

编辑

]

python如何去除重复行并写入另一个文件

fin?=?'a.txt'

fout?=?'b.txt'

with?open(fin)?as?f:

ss?=?f.reads().strip().split(' ')

s2?=?[ss[0]]?

for?s?in?ss[1:]:

if?s?!=?s2[-1]:

s2.append(s)

with?open(fout,?'w')?as?f:

f.write(' '.join(s2))

or

fin?=?'a.txt'

fout?=?'b.txt'

with?open(fin)?as?f:

ss?=?f.reads().strip().split(' ')

s2?=?[ss[i]?for?i?in?range(len(ss))?if?i==0?or?ss[i]!=ss[i-1]]

with?open(fout,?'w')?as?f:

f.write(' '.join(s2))

python如何合并多个txt文件删除所有重复行并生成新文件

把所有的这些txt文件放到一个文件夹里

打开cmd, 进入到这个放了多个txt的文件夹, 运行命令copy *.txt all.txt

在该文件夹下创建一个python脚本 1.py, 将下列代码复制进去

#?coding=utf-8

#?using?python27

file_path?=?'all.txt'

with?open(file_path,?'r')?as?f:

card_informations?=?map(lambda?x:?x.strip().split(' '),?f.readlines())

for?i?in?range(len(card_informations)):

number?=?card_informations[i][0]

if?len(number)10:

card_informations[i][0]?+=?'0'#?给小于十位的加上0

#?剔除重复数据

result?=?[]

for?i?in?card_informatios:

if?i?not?in?result:

result.append(i)

#?写入新文件

with?open('result.txt',?'w+')?as?f:

for?i?in?range(len(result)):

f.write(result[i][0]+' '+result[i][1]+' )

4. 运行该脚本, 然后该文件夹下就会多出一个result.txt的文件, 里面放的就是去重完之后的所有卡信息.

134人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册