【问题标题】:Function not writing to .xls correctly . Python 2.7.1函数未正确写入 .xls。 Python 2.7.1
【发布时间】:2011-12-05 02:49:39
【问题描述】:

当我检查我的 Excel 文件时,它只写入最后输入的一行数据。

def Table(fn,fe):

       for fseq in fn:
              count=0
              for k in fseq:
                     if k=='G' or k=='C':
                            count=count+1
              percentage=(float(count)/len(fseq))*100
              fin=open(fe,'w')
              table=str(fseq)+'\t'+str(count)+'\t'+str(percentage)+'\n'
              fin.write(table)
       return fe



tablist=["AAUG","GCGA","AGCG","TCGA"]
fout=Table(tablist, 'abc.xls')

应该是这样输出的:

   AAUG    1   25.0
   GCGA    3   75.0
   AGCG    3   75.0
   TCGA    2   50.0

相反,我的输出如下所示:

   TCGA    2   50.0

并返回正在写入的文件的名称。

为什么只为字符串的最后一个元素写入数据?

【问题讨论】:

  • 请正确格式化您的代码。
  • 为什么不使用openpyxl

标签: python string function export-to-excel


【解决方案1】:

您的 for 循环是遍历字符串,而不是每个字符串的字符。试试这个:

   for k in fn:
       for c in k:
          if c=='G' or c=='C':
                 count=count+1

(else: 不是必须的。)

您还需要将您的文件编写代码移到外循环内,以使您的报告正确(但将 open 移到外循环上方)。

【讨论】:

  • 它将 9 写入 excel 文件中我在意识到 k 是列表中的每个字符串后尝试了它
  • 您还需要重新排列输出到文件的代码。它需要在您的函数顶部打开一次,并且每次在外部 for 循环周围写入一次。
【解决方案2】:
if k=='G' or k=='C':

您列表中的任何成员都不会符合此条件。因此,您的 count 仍为 0

您可能希望遍历字符串中的字符。

【讨论】:

    【解决方案3】:

    想通了。创建一个空字符串,然后将表的每个值添加到它是在 for 循环的迭代期间创建的。将字符串写入 .xls 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2017-01-07
      • 2023-03-17
      • 2018-12-05
      • 2017-06-29
      • 2012-10-14
      相关资源
      最近更新 更多