Неожиданные пустые строки в выводе Python - PullRequest
0 голосов
/ 04 июня 2010

У меня есть немного кода, который проходит через словарь и выводит значения из него в формате CSV. Странно, я получаю пару пустых строк, где весь вывод всех записей словаря пуст. Я прочитал код и не могу понять, есть ли что-нибудь кроме строки с запятыми могут быть выведены. Пустая строка должна содержать значения, поэтому дополнительная \ n не является причиной. Кто-нибудь может посоветовать, почему я получаю пустые строки? В других случаях я запускаю пропущенную строку появляется.

Недостающая строка:

6415, 6469, -4.60, clerical, 2, ,,,joe,030193027org,joelj,030155640dup

Использование python 2.6.5

Бит кода:

      tfile = file(path, 'w')
      tfile.write('Rec_ID_A, Rec_ID_B, Weight, Assigned, Run, By, On, Comment\n')
      rec_num_a = 0

      while (rec_num_a <= max_rec_num_a):
        try:
            value = self.dict['DA'+str(rec_num_a)]
        except:
            value = [0,0,0,'rejected']
        if (value[3]!='rejected'):
            weightValue = "%0.2f" % value[2]
            line = value[0][1:] + ', ' + value[1][1:] + ', ' + weightValue \
                             + ', ' + str(value[3]) + ', ' + str(value[4]) 
            if (len(value)>5):
                line = line + ', ' + value[5] + ',' + value[6] + ',' + value[7]
            (a_pkey, b_pkey) = self.derive_pkeys(value)
            line = line + a_pkey + b_pkey
             tfile.write( line + '\n')
        rec_num_a +=1            

Пример вывода

6388, 2187, 76.50, clerical, 1, ,,,cameron,030187639org,cameron,030187639org
6398, 2103, 70.79, clerical, 1, ,,,caleb,030189225org,caldb,030189225dup
6402, 2205, 1.64, clerical, 2, ,,,jenna,030190334org,cameron,020305169dup
6409, 7892, 79.09, clerical, 1, ,,,liam,030191863org,liam,030191863org

6416, 11519, 79.09, clerical, 1, ,,,thomas,030193156org,thomas,030193156org
6417, 8854, 6.10, clerical, 2, ,,,ruby,030193713org,mia,020160397org
6421, 2864, -0.84, clerical, 2, ,,,kristin,030194394org,connou,020023478dup
6423, 413, 75.63, clerical, 1, ,,,adrian,030194795org,adriah,030194795dup

Ответы [ 3 ]

3 голосов
/ 04 июня 2010

Почему вы не используете встроенный в Python csv модуль?

Тогда, что делает self.derive_pkeys(value)? Может быть, b_pkey иногда заканчивается \n?

1 голос
/ 04 июня 2010

(1) Скажите точно, что такое «пустая строка» - содержит только новую строку? содержит один или несколько пробелов? Другие пробельные символы?

(2) Как вы определили ответ на вопрос 1? [«просмотр в текстовом редакторе» не является хорошим ответом, а также «не распечатал его на моем терминале и не положил глаз»; попробуйте print repr(line)]

(3) Как вы определили, что «недостающие данные» на самом деле есть во входном словаре?

(4) Некоторые пробеги работают, некоторые нет ... так что еще отличается? Из чего состоит диктат? Многопользовательская база данных? Статический файл?

1 голос
/ 04 июня 2010

, не видя исходных данных, трудно сказать, но я могу предположить, что в ваших данных есть несколько случайных символов \n, как в b_pkey. Вы можете попробовать .strip () для этого значения, чтобы убедиться, что оно чистое.

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