让我详细解释一下这个问题......
我有两个文本文件(池文件)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 (橙子,芒果) (葡萄,咖啡) (汽车,冰淇淋) (桌子,椅子) (窗口,牛奶)
清除我所称的条目和实体: 一个条目是:(苹果,橙色) 一个实体是:苹果 每个条目都有两个元素。逗号是分隔符。 应该没有重复的条目或条目。 如果条目或元素出现在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文件应具有: (橙色,芒果) * 在这种情况下,重复的条目是可以的 (汽车,冰淇淋)
* 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
答案 0 :(得分:0)
假设这些行应交替放入两个不同的文件中:
inputFile = file('CL-0.txt')
out = [ file(fileName, 'wb') for fileName in [ 'xx_0.txt', 'yy_0.txt' ] ]
done = set()
for line in inputFile:
elements = re.match(r'\s*\(\s*([^,])*\s*,\s*([^)])*\)\s*', line)
if elements in done:
continue
out[0].write(', '.join(elements) + '\n')
done.add(elements)
out = out[1:] + [ out[0] ] # round robin
for f in out:
f.close()
但我不明白这些xx1
和yy1
集的目的是什么。你的代码肯定没有解释它(它根本没有写到这些),你的文本也没有用。也许你想详细说明一下?