首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果文件1中的术语与文件2一致,则将文件2中的整行写入文件3。

如果文件1中的术语与文件2一致,则将文件2中的整行写入文件3。
EN

Stack Overflow用户
提问于 2013-08-02 16:42:18
回答 2查看 116关注 0票数 2

我有两个文本文件,一个包含标识符列表,另一个包含更多标识符列表,还有一些我想要的信息。我要做的是比较文件1和2中的标识符,如果它们匹配,则将文件2中的行写入一个新文件,即文件3。

下面是我所拥有的(这有点奇怪,因为我进入了列表,而且在编程方面还没有得到那么多):

代码语言:javascript
复制
def identify(MOPED_Prot, Swiss_Prot, MOPED_to_Swiss):
  Swiss = open(Swiss_Prot, 'r') 
  M = open(M_Prot, 'r')
  output = open(M_to_Swiss, 'wt')
  Swissids = []
  ids = []
  for line in M.readlines():
    ids.append(line[:5])
  for line in Swiss.readlines():
    Swissids.append(line)
  while set(ids)& set(Swissids):
      output.write(#line?  Not sure what goes here + "\n")

我确实得到了这样的代码,可以用类似于此的代码为每个交叉点编写一行从“瑞士”到新文件的代码,但它只重复了一行。老实说,最后才是我所困惑的。

编辑:按照要求,以下是文件的样子

档案1:

代码语言:javascript
复制
B4E035      
P23946      
O00376      
D6RGF3      
B2RDK6      
Q12999      
Q8TDD2      
B2RDC9      
C9JL66      
Q9NZQ9  

档案2:

代码语言:javascript
复制
P31946  1433B_HUMAN YWHAB
P62258  1433E_HUMAN YWHAE
Q04917  1433F_HUMAN YWHAH YWHA1
P61981  1433G_HUMAN YWHAG
P31947  1433S_HUMAN SFN HME1

文件3应该输出文件2中的行,如果第一列中有任何标识符匹配(它们都是6个字符的长度)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-02 16:48:50

假设file1每一行包含一个标识符,也许您可以使用以下内容:

代码语言:javascript
复制
with open (file1, 'r') as f: ids = [line.strip () for line in f]
with open (file2, 'r') as f:
    with open (file3, 'w') as g:
        for line in f:
            if any (id in line for id in ids): g.write (line)

Nota :我没有安装python2.7 (直到现在我还读到您需要python2.7)。也许您需要进行一些调整,以便将此代码移植到py2。

编辑:考虑到您的示例数据,您可以尝试如下:

代码语言:javascript
复制
with open (file1, 'r') as f: ids = [line.strip () for line in f]
with open (file2, 'r') as f:
    with open (file3, 'w') as g:
        for line in f:
            if any (line.startswith (id) for id in ids): g.write (line)
票数 0
EN

Stack Overflow用户

发布于 2013-08-02 17:04:24

我在这里写了一些能帮你的东西.我把三个文件放进一个文件夹

file_a.txt (每一行1、2、3、4、5中的内容)

file_b.txt (每一行4、5、6、7、8中的内容)

final_file.txt

这是我的剧本:

代码语言:javascript
复制
# -*- coding: utf-8 -*-

from collections import Counter

file_a = open('file_a.txt', 'r')
file_b = open('file_b.txt', 'r')
final_file = open('final_file.txt', 'w')

ids = []

for line in file_a.readlines():
  ids.append(line)

print ids
c = Counter(ids)

for line in file_b.readlines():
  print line;
  print 'count' + str(c[line])
  if c[line] > 0:
    final_file.write(line);

file_b.close();
final_file.close();
file_a.close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18022106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档