怎样删除文件中两列交叉重复的值得到唯一值

文件a.txt

Zm00001eb093920   Zm00001eb336500
. . .                                        . . .
Zm00001eb229510    Zm00001eb209800
. . .                                       . . .
Zm00001eb336500    Zm00001eb093920
Zm00001eb209800    Zm00001eb229510

怎样得到

想得到结果文件b.txt

Zm00001eb093920    Zm00001eb336500

Zm00001eb229510    Zm00001eb209800

或者b.txt

Zm00001eb033650    Zm00001eb093920

Zm00001eb209800    Zm00001eb229510

有点深奥,看不懂题

懂了,你是想左边和右边一样是吧

file = open('a.txt')
val_list = file.readlines()
lists =[]
for string in val_list:
    string = string.split(' ',2)
    string[1] = string[1].replace('\n','')
    lists.append(string[0:2]) #只取每个string的前两项,得到的lists即为所要的列表
arrs = lists
res = []
res.append(arrs[0])
flag = False;
for i in arrs:
    flag = False;
    print('i-->toTest',i)
    for j in res:
        print('j-->',j,'i-->',i,(i[0]==j[0] and i[1]==j[1])or(i[0]==j[1] and i[0]==j[1]))
        if((i[0]==j[0] and i[1]==j[1])or(i[0]==j[1] and i[0]==j[1])):
            flag = False;
            break;
        else:
            flag = True;
    if(flag):
         print('i-->toAppend',i)
         res.append(i);
print(res)

 

sets = set()
lists = []
with open(r'a.txt','r') as rf:
    for line in rf:
        tu = tuple(sorted(line.strip().split(" ")))
        if tu not in sets:
            sets.add(tu)
            lists.append(line)
print(*lists, sep='\n')
with open(r'b.txt','w') as wf:
    wf.writelines(lists)

 

>>> content = list()
>>> with open(r'd:\a.txt', 'r') as fp:
	for line in fp.readlines():
		content.append(tuple(set(line.strip().split())))
		

>>> content = list(set(content))
>>> with open(r'd:\b.txt', 'w') as fp:
	fp.write('\n'.join([' '.join(line) for line in content]))

 
31

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632