【问题标题】:Jupyter Notebook io.StringIO as outputJupyter Notebook io.StringIO 作为输出
【发布时间】:2020-04-04 03:15:34
【问题描述】:

输入

Blast_aa_mc = qblast("blastp","nr", aa_mc[2])
Blast_aa_mc

输出

<_io.StringIO at 0x12a1a48>

什么是_io.StringIO?这是什么意思?我期待的是某种字符串或数组。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: python jupyter-notebook bioinformatics biopython stringio


    【解决方案1】:

    您可以通过Bio.SearchIO模块解析从qblast()返回的结果句柄,例如

    from Bio import SearchIO
    from Bio.Blast import NCBIWWW
    
    Blast_aa_mc = NCBIWWW.qblast("blastp","nr", aa_mc[2])
    blast_qresult = SearchIO.read(Blast_aa_mc, "blast-xml")
    print(blast_qresult)
    

    这在我最近的Biopython Jupyter Notebook tutorial 中有介绍。

    对于多个结果,请使用SearchIO.parse(Blast_aa_mc, "blast-xml")(将list() 包裹起来以在内存中创建一个列表)

    【讨论】:

      【解决方案2】:

      StringIO 是标准库中 Python 的 io 模块中的一个类。 本质上,StringIO 对象的行为类似于 Python 文件对象,它不存储在磁盘上,而是保存在内存中。

      我们来看一个简单的例子:

      f = io.StringIO("Some initial\ntext data.")
      

      如果你把它打印出来,你会得到和你类似的结果:

      print(f)
      
      >> <_io.StringIO object at 0x7f4530264a68>
      

      如何处理?嗯,几乎任何你可以用文件对象做的事情,你都可以用 StringIO 对象做。例如获取 f 中所有行的列表:

          content = f.readlines()
          print(content)
      
          >> ['Some initial\n', 'text data.']
      

      并获取包含所有内容的单个字符串:

      print(''.join(content))
      
      >> 'Some initial
      text data.'
      

      请注意,您只能调用一次 readlines - 就像文件一样。第二次调用 readlines 将返回一个空列表。

      【讨论】:

        猜你喜欢
        • 2018-11-25
        • 1970-01-01
        • 1970-01-01
        • 2019-01-25
        • 2020-12-10
        • 1970-01-01
        • 2019-11-24
        • 2020-05-19
        • 2019-08-01
        相关资源
        最近更新 更多