【问题标题】:How to find common set of pattern from two files in python?如何从python中的两个文件中找到共同的模式集?
【发布时间】:2019-03-11 10:30:18
【问题描述】:

我将 file1 列为:

- 
er
we
ds,e3,kj
uy,mn
po
qw
pi
pi,f

文件 2 列为:

- 
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 , kje3 ,uy,pi,f

有人可以帮忙吗?

【问题讨论】:

  • 先尝试格式化代码

标签: python file signals


【解决方案1】:

这是因为字符串“ds,e3,kj”和“ds,kj,e3”的含义不相等。 如果您需要将此类模式视为字符串,请尝试先对它们进行排序并在之后进行比较。

if ',' in line:
    line = ','.join(sorted(line.split(',')))

【讨论】:

    【解决方案2】:

    您需要将行拆分为子字符串。 (以'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
    

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        相关资源
        最近更新 更多