使用 re.search 搜索文件并将输出保存到新文件
searching file using re.search and saving output to new file
我已经为此纠结了一段时间:
我正在文件中搜索模式并希望将输出保存到另一个文件。
但是我不断收到错误消息:
'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 ...
谢谢
这个
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)
我已经为此纠结了一段时间:
我正在文件中搜索模式并希望将输出保存到另一个文件。 但是我不断收到错误消息:
'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 ...
谢谢
这个
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)