让我详细解释这个问题...分割文本文件到两个文件与非重叠项
我有两个文本文件(池文件)CL-0.txt和CL-1.txt的 我必须将两者分成两个部分。 CL-0.txt分成xx_0.txt和yy_0.txt两个部分,CL-1.txt分为xx_1.txt和yy_1.txt部分。两个文件的内容格式如下。 CL-0 (苹果,橙) (芒果,香蕉) (蛋糕,茶) (咖啡,糖) (牛奶,蜂蜜) (蛋糕,biscuts) CL-1 (橙,芒果) (葡萄,咖啡) (汽车,冰淇淋) (桌,椅) (窗口,牛奶)
明确什么我指作为一个入门和作为一个实体: 一个条目是:(苹果,橙色) 和一个实体是:apple 每个条目都有两个元素。逗号是分隔符。 应该没有重复的条目或条目。 如果条目或元素出现在xx_0.txt中,则它不能出现在yy_0.txt和yy_1.txt中 如果条目或元素出现在yy_0.txt中,它就不会出现在xx_0.txt和xx_1.txt中 如果一个条目或一个元素出现在xx_1.txt中,它就不能出现在yy_0.txt和yy_1.txt中 如果一个条目或元素出现在yy_1.txt中,它就不会出现在xx_0.txt和xx_1.txt中
每个条目被逐一取出,并且为两个文件交替地选择条目,直到条目被写入文件。
预期的输出结果如下
从CL-0的组成文件:
*的xx_0文件应该有: (苹果,橙) (蛋糕,茶) (牛奶,蜂蜜)
*的yy_0文件应该有: (芒果,香蕉) (咖啡,糖) (蛋糕,biscuts)不能添加蛋糕已经出现在xx_0
个从CL-1 constinuent文件:
*的xx_1文件应该有: (橙,芒果)*一个重复的条目在这种情况下 (汽车,冰淇淋)
OK * yy_1文件将有: (葡萄,咖啡)*再次在这种情况下重复的条目是好的 (表,主席) (窗口,牛奶)不能被添加在这里,因为它会有重复的实体奶已经出现在xx_0文件中
我尝试了一半的问题,认为如果我可以成功地将CL-0文件分成两部分,其余部分可以通过稍微调整轻松实现。
我的努力是如下:
xx_0=open('xx_0.txt','wb') #the file that i want to populate
yy_0=open('yy_0.txt','wb') #the file that i want to populate
file=open('CL-0.txt','r') # the main file
xx0=set()
xx1=set() # un1 a set against which the desired file has to be checked against for matches
yy0=set()
yy1=set() # un2 a set against which the desired file has to be checked against for matches
for line in file:
s=line.replace('[,]','')
s=s.replace('\n','')
s=s.replace('(','')
s=s.replace(')','')
s=s.replace("'",'')
r=re.split(',',s)
if L==1:
for n in r:
if n not in yy0:
if n not in yy1:
xx0.add(n)
r1= ', '.join(r)
xx_0.write(r1)
xx_0.write('\n')
L+=1
continue
if L==2:
for n in r:
if n not in xx_1:
if n not in yy_1:
yy0.add(n)
r2=', '.join(r)
yy_0.write(r2)
yy_0.write('\n')
L=1
'(orange,mango)'?你应该采用什么策略来丢弃? – dmg 2013-02-28 13:02:17
你没有初始化你的'L',所以我认为它在开始时应该是'L = 1'? – Alfe 2013-02-28 13:38:12
@DJV我写的代码的前提是,当我开始循环“如果n不在yy0”它会给我不重复的元素,所以他们将被丢弃。推定是否错误? – irfanbukhari 2013-03-01 06:08:22