我的file1列为:
-
er
we
ds,e3,kj
uy,mn
po
qw
pi
pi,f
File2列为:
-
df
we
wr
f,pi
ds,kj,e3
rt,uy
qw
po
我尝试了以下代码,但无法正常工作:-
my_set1 = set(x.strip() for x in (open('file1').readlines()))
print(my_set1)
my_set2 = set(x.strip() for x in (open('file2').readlines()))
print(my_set2)
my_list=list((set(my_set1).intersection(set(my_set2))))
print(my_list,"\n")
with open('common_signals','w') as file3:
for signal in my_list:
file3.write("%s\n" %signal)
我在commong信号中得到的输出是:- po ,we ,qw
。
它被忽略了ds , kj
和e3 ,uy,pi,f
。
有人可以帮忙吗?
答案 0 :(得分:0)
您需要将行拆分为子字符串。 (以“ ds,kj,e3”为例)
尝试使用方法“ get_set_of_words”。
该方法返回一个可用于相交的集合。
def get_set_of_words(file_name):
result = set()
with open(file_name) as f:
lines = [w.strip() for w in f.readlines()]
for line in lines:
words = line.split(',')
for word in words:
result.add(word)
return result
答案 1 :(得分:0)
对代码进行略微修改的版本将产生所需的结果:
my_set1 = sum([x.strip().split(',') for x in open('file1').readlines()],[])
print(my_set1)
my_set2 = sum([x.strip().split(',') for x in open('file2').readlines()],[])
print(my_set2)
my_list=list((set(my_set1).intersection(set(my_set2))))
print(my_list,"\n")
with open('common_signals','w') as file3:
for signal in my_list:
file3.write("%s\n" %signal)
您需要拆分每个列表元素,然后使用sum
可以flatten列表。
结果:
-
qw
pi
kj
ds
po
e3
f
uy
we
答案 2 :(得分:0)
这是因为在字符串“ ds,e3,kj”和“ ds,kj,e3”的含义上不相等。 如果您需要对此类模式进行处理,请尝试将其排序为最高级,然后进行比较。
if ',' in line:
line = ','.join(sorted(line.split(',')))