python输出中出现意外的空行

时间:2010-06-04 05:50:38

标签: python file csv

我有一些代码贯穿字典并以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 个答案:

答案 0 :(得分:3)

为什么不使用Python的内置csv模块?

然后,self.derive_pkeys(value)做了什么?可能b_pkey有时以\n结束吗?

答案 1 :(得分:1)

没有看到源数据很难说,但我可以推测你的数据中有一些迷路的\n字符,就像在b_pkey中一样。您可以尝试对该值执行.strip()以确保它是干净的。

答案 2 :(得分:1)

(1)请准确说出“空行”是什么 - 仅包含换行符?包含一个或多个空格?其他空白字符?

(2)你是如何确定Q1的答案的? [“在文本编辑器中查看”并不是一个好的答案,也不是“将它打印到我的终端并用它来表达”;试试print repr(line)]

(3)您如何确定“缺失数据”实际上在输入字典中?

(4)有些运行,有些运行不...所以还有什么不同?从什么是dict填充?一个多用户数据库?一个静态文件?