Python输出中出现意外空行
我有一段代码,它会遍历一个字典,并把里面的值输出成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 个回答
1
不看到源数据很难判断,但我可以猜测你的数据里可能有一些多余的 \n
字符,比如在 b_pkey
里。你可以试着对这个值使用 .strip() 方法,这样可以确保它是干净的。
1
(1) 请明确说明什么是“空行”——是只包含换行符吗?还是包含一个或多个空格?或者其他空白字符呢?
(2) 你是怎么得出问题1的答案的?单纯说“在文本编辑器里看过”或者“打印到终端上看”都不算好答案;可以试试用print repr(line)
。
(3) 你是怎么确定“缺失的数据”实际上在输入的字典里?
(4) 有些运行成功,有些不成功……那还有什么不同呢?这个字典是从哪里填充的?是多用户数据库?还是静态文件?
3
你为什么不使用Python自带的csv模块呢?
那么,self.derive_pkeys(value)
这个函数是干什么的呢?难道b_pkey
有时候会以\n
结尾吗?