【问题标题】:python writing csv Django for looppython编写csv Django for循环
【发布时间】:2012-10-15 11:13:40
【问题描述】:

我有点坚持使用 python csv 库编写 csv 文件。我正在使用 Django 将信息从数据库中获取到对象中。

我现在拥有的,可以使用但尚未完成:

writer.writerow([Itag.Gen_ID if Itag else '',
     Itag.Solyc if Itag else '',
     Itag.GO_number if Itag else '',
     Itag.GO_def if Itag else '',
     Itag.Itag_description if Itag else '',
     Itag.IPR_Number if Itag else '',
     Itag.IPR_Description if Itag else '',
     Itag.Trivial_name if Itag else '',
     Loci.Locus_symbol if Loci else '',
     Loci.Locus_name if Loci else '',])

如果存在对象,这会将对象信息写入 CSV 文件。 现在在下一部分中,我有一个名为 Blast 的对象, Blast 有几个属性: Blast.name, Blast.hit, Blast.score 对象 ItagLoci 具有一对一的关系,这就是为什么它们都非常适合连续。

现在Blast 对象与ItagLoci 具有多对一关系 所以 5 Blast hits 可以与 1 Itag and Loci Hit 有关系。

现在如何将所有 5 个Blast 对象属性写入 CSV 文件的同一行?

【问题讨论】:

    标签: python django csv file-io


    【解决方案1】:

    这很不整洁,但最明显的解决方案是将命中附加到该行:

    <all that other stuff>, first_blast_name, first_blast_hit, first_blast_score, second_blast_name, second...<and so on>
    

    就我个人而言,如果有的话,我很少这样做。我宁愿为loci 准备一个csv 文件,为blast 准备另一个文件。

    【讨论】:

    • 这里的问题是我永远不知道有多少 Blast hits.. 那么你建议如何将它附加到行中?
    • 你知道除了其他的东西只有爆炸命中,所以继续追加它们。或者保留一个单独的爆炸文件。这里有什么问题?
    • 是的,在其他东西之后只有爆炸命中。单独的爆炸文件是可能的,但不是解决我的问题的好方法。那我该如何附加它们呢?如果我不知道我会得到多少爆炸命中?另一个writer.writerow() 不起作用,因为这会创建一个新行。那么如何将所有对象属性附加到该行?
    • 您可以在到达 writer 之前准备好列表。它不需要立即完成。您甚至可以将列表附加到循环中的列表,从而制作非常长的任意长度的列表/行。
    • 你能展示一下如何做到这一点吗?因为我试过了,但是作者把它搞砸了,把所有的信息放在一列。你能帮我写一段示例代码吗?
    猜你喜欢
    • 2013-08-28
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2016-09-30
    相关资源
    最近更新 更多