我正在从常规文本文件中读取一些行并将它们附加到列表中。每隔一段时间,此列表就会合并为一个单元素列表并写入CSV文件。但是,我偶尔会看到写出的数据在某个任意点过早地中断,即缺少其余的数据。如果我在写入文件之前将此列表打印到控制台,我可以看到所有数据都清楚,所以我认为这是我的代码中的一些格式或IO问题。我做错了什么?
with open(out_fname, 'wb') as fout:
csv_out = csv.writer(fout)
csv_out.writerow(header_list)
with open(in_fname, 'rb') as fin:
for _ in xrange(data_start_row-1):
next(fin)
for line in fin:
#find identifier for row of interest
if re.search(regex_id, line):
#parse out first parameter
match1 = re.search(regex_m1, line)
if match1: csv_out_l.append(match1.group(1))
#parse out second parameter
match2 = re.search(regex_m2, line)
if match2: csv_out_l.append(match2.group(1))
#parse out third parameter
match3 = re.search(regex_m3, line)
if match3: csv_out_l.append(match3.group(1))
#remove all newline elements in rest of log info
log_info = [element for element in log_info if element != '\n']
#remove all newline char's in elements
log_info = map(lambda s: s.strip(), log_info)
log_info = ["\n".join(log_info)]
csv_out.writerow(csv_out_l + log_info)
#clear lists
csv_out_l[:] = []
log_info[:] = []
#skip next line which does not contain useful info
next(fin)
#otherwise store general data in the meantime
else:
log_info.append(line)
答案 0 :(得分:1)
对不起,我意识到这不是Python的问题。它与Excel有关,不喜欢我的一些CSV输出行以等号(=)开头的事实。我认为Excel认为它是一个公式,并在限制后切断字符。如果我在开头添加撇号,那么一切正常。