如何从python中的两个文件中找到常用的模式集?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从python中的两个文件中找到常用的模式集?相关的知识,希望对你有一定的参考价值。

我有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)

我得到的常见信号输出是:qazxsw poi。

它有NEGLECTED - po ,we ,qwds , kj

有人可以帮忙吗?

答案

这是因为字符串“ds,e3,kj”和“ds,kj,e3”的含义不相等。如果你需要对这种类型的模式进行处理,那么将它们作为字符串处理,然后尝试对它们进行ferst并在之后进行比较。

e3 ,uy,pi,f
另一答案

您需要将行拆分为子字符串。 ('ds,kj,e3'为例)

尝试使用方法'get_set_of_words'。

该方法返回一个可用于交集的集合。

if ',' in line:
    line = ','.join(sorted(line.split(',')))
另一答案

稍微修改的代码版本将产生所需的结果:

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

你需要拆分每个列表元素然后使用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

以上是关于如何从python中的两个文件中找到常用的模式集?的主要内容,如果未能解决你的问题,请参考以下文章

如何从python中的字符索引中找到行号?

如何解决 Python 中的“ValueError:找到样本数量不一致的输入变量”问题

机器学习中的损失函数(附python代码)

Python如何实现从txt文件中所有两个特殊字符间的内容进行查找一个指定字符串?

如何找到使用Python的数据上最常用的单词? [重复]

如何比较两个二进制文件或文件集并在 Python 中显示它们之间的差异?