|
5鱼币
我有两个文件A和B:
我想获得A和B的交集和,但是 A和B文件里有自己的重复词,我不希望删除它,以下是我的代码,希望给予改进,谢谢....
import re #读取re
f = open(r'C:\Users\amgalang\PycharmProjects\论文第二部分01\1000-15000已经做完的拉丁.txt') #给予目标文档
r = open(r'C:\Users\amgalang\PycharmProjects\论文第二部分01\1000-15000以前的拉丁文件.txt') #给予打开的目标文档
dc = open(r'C:\Users\amgalang\PycharmProjects\论文第二部分01\1000-15000重复文本.txt','a+') #给予目标文档 a+ = 写入+ 创建
text1 = f.read()
text2 = r.read()#读取文件
textlist1 = re.split('r`\s+',text1.replace('\n',' ')) #用每个空格分开单词 + 回车符改变为空格
textlist2 = re.split('r`\s+',text2.replace('\n',' ')) #用每个空格分开单词 + 回车符改变为空格
list3 = ''.join(textlist1) # ''.join()把list 变成字符串
list4 = list3.split(' ') #用空格隔开
o = set(list4) # no dumplicates
dc.write('UP no duplicates:')
dc.write(str(len(o))) #导出文件并写入 up dumplicates 的 len
print(len(o))
list5 = ''.join(textlist2)
list6 = list5.split(' ')
i = set(list6)
dc.write(' Down no duplicates:')
dc.write(str(len(i)))
print(len(i))
#l = (o | i)-o #并集合-前者
#dc.write('New words:'+ str(len(l)))
#print(len(l))
n = o & i #交集合
print(len(n))
print(n)
dc.write(' Intersection:'+ str(len(n))+'.'+'\n')
f.close()
r.close()
dc.close()
(我把set()函数去掉后 报错了:TypeError: unsupported operand type(s) for &: 'list' and 'list')
希望给予解决谢谢
# coding=utf-8
import os
import sys
import argparse
import re
def get_file1_list(file1):
list1=[]
gene1=open(file1,'r')
for row in gene1:
row=row.strip().split()
list1.append(row[0])
gene1.close()
return list1
def get_repeat_list(file2,list1,outfile):
list2=[]
list1_1=list(set(list1))
gene2=open(file2,'r')
outf=open(outfile,'w')
for line in gene2:
line=line.strip().split()
if line[0] in list1_1:
list2.append(line[0])
else:
pass
outf.write('%s' % ('\n'.join(list(set(list2)))))
gene2.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='get the repeat words')
parser.add_argument("--f1", default=None)
parser.add_argument("--f2",default=None)
parser.add_argument("--output", default=None)
args = parser.parse_args()
list1=get_file1_list(args.f1)
get_repeat_list(args.f2,list1,args.output)
可以解决你举的例子 但是不知道是否能够真正解决你的文件需求
|
最佳答案
查看完整内容
# coding=utf-8
import os
import sys
import argparse
import re
def get_file1_list(file1):
list1=[]
gene1=open(file1,'r')
for row in gene1:
row=row.strip().split()
list1.append(row[0])
gene1.close()
return list1
def get_repeat_list(file2,list1,outfile):
list2=[]
list1_1=list(set(list1))
ge ...
|