微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 re.search 搜索文件并将输出保存到新文件

如何解决使用 re.search 搜索文件并将输出保存到新文件

我已经为此纠结了一段时间:

我正在搜索文件以查找模式并希望将输出保存到另一个文件。 但是我不断收到错误

'str' object has no attribute 'write' 

这是在 Google Colab 上抓取文件代码

!wget 'ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/kNowledgebase/complete/uniprot_sprot.dat.gz'

!gunzip uniprot_sprot.dat.gz

这是我尝试过的:

import re

with open('uniprot_sprot.dat','r') as f:
  for i in f:
    #if re.search(r"^ID|^SQ|^\s",i):
    if re.search(r'^ID|^\s',i):
      print(i,file = 'output.txt')

我可以正常打印到标准输出,但是在写入文件时出现上述错误消息。

所需的输出将是一个包含以下内容文件(包含更多行):

ID   ACDH3_MYCVP             Reviewed;         306 AA.

 MADKKSVAIV GSGNISTDLL YKLlrsEWLE PRWMIGIDPE SEGLaraRKL GLETSHEGVD

 WLLAQSELPD MVFEATSAYV HKAAAPRYAE AGIRAIDLTP AAVGPGVIPP ANLRAHLDAP

 NVNMVTCGGQ ATIPMVYAVS RVVEVPYAEI VASVSSASAG PGTRANIDEF TKTTSAGVQN

 IGGAQRGKAI IILNPAEPPM IMRDTIFCAI PEHADHAAIT QSIKDVVAEV QTYVPGYRLL

 NEPQFDEPSV VNGGNHVVTV FVEVEGAGDY LPPYAGNLDI MTAAATKVGE EIAKESLAAT

 AGGAQA

ID   ACDH3_NOCFA             Reviewed;         328 AA.

 MNHMSDPTTV KVAVIGSGNI GTDLMIKVIR ...

谢谢

解决方法

您可以open输出文件,与您对输入文件所做的相同

with open('uniprot_sprot.dat') as f_in,open('output.txt','w') as f_out:
    for i in f_in:
        if re.search(r'^ID|^\s',i):
            f_out.write(i)
,

这个

print(i,file = 'output.txt')

是不正确的用法,file 应该是一个类似文件的对象(流);默认为当前的 sys.stdout。 示例用法:

i = [1,2,3]
with open("output.txt","w") as f:
    print(i,file=f)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。