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

2024-10-03 09:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力解决这个问题已经有一段时间了:

我正在搜索一个文件以查找模式,并希望将输出保存到另一个文件。 然而,我不断得到错误:

'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 ...

谢谢


Tags: 文件reidsearchif错误模式ftp
2条回答

这个

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

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

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

您可以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)

相关问题 更多 >