Функция не пишет правильно в .xls.Python 2.7.1 - PullRequest
1 голос
/ 05 декабря 2011

Когда я проверяю свой файл 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

и вернуть имя записываемого файла.

Почему он записывает данные только для последнего элемента строки?

Ответы [ 3 ]

1 голос
/ 05 декабря 2011

Ваш цикл for проходит по строкам, а не по символам каждой строки.Попробуйте это:

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

(остальное: не обязательно.)

Вам также нужно переместить код записи файла во внешний цикл, чтобы получить правильный отчет (но переместите открытый над внешней петлей).

0 голосов
/ 06 декабря 2011

Разобрался. Создала пустую строку, а затем добавила к ней каждое значение таблицы, созданное во время итерации в цикле for. Написал строку .xls файл

0 голосов
/ 05 декабря 2011
if k=='G' or k=='C':

Никто из членов вашего списка никогда не будет соответствовать этому условию.Следовательно, ваш count остается на 0.

Возможно, вы хотите зациклить символы в вашей строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...