2010-06-04 43 views
0

我有一段代码运行一个字典,并以CSV格式输出它的值。奇怪的是,我得到了几行空白行,其中所有字典条目的输出都是空白的。我读过代码,不能理解除了逗号可以输出的行外。空白行应该包含值,所以\ n不是原因。任何人都可以建议我为什么会空白行吗?其他时候我运行失踪线出现。python输出中意外的空行

缺失行:

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 
+0

首先学会使用内置的字符串格式化函数,http://docs.python.org/library/stdtypes.html#string-formatting – 2010-06-04 05:59:00

+2

@fuzzy:这些都在Python 3.0中消失了,无论如何,我会说迭代风格;-) Martlark,这是'对于recrange_a在xrange(max_rec_num_a)'' – 2010-06-04 06:17:22

+0

''我使用字符串格式错误?我没有使用内置的csv模块,因为这不是我的代码。 – Martlark 2010-06-04 06:21:41

回答

3

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

那么,self.derive_pkeys(value)做什么?难道b_pkey有时会以\n结束?

1

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

+4

这将是'.strip()' – 2010-06-04 06:22:39

1

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

(2)您是如何确定Q1的答案的? [“在文本编辑器中查看”不是一个好的答案,也不是“将它打印到我的终端并使其眼睛”;请尝试print repr(line)]

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

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