读取每隔一行并打印到新文件

时间:2013-07-05 23:00:41

标签: python

我正在尝试读取CSV文件中的每一行,并将其打印在一个新文件中。不幸的是,我得到一个空白行,我无法删除。

lines = open( 'old.csv', "r" ).readlines()[::2]
file = open('new.csv', "w")
n = 0
for line in lines:
    n += 1
    if ((n % 2) == 1):
            print >> file, line

我正在使用的代码只是通过查看n的modolus值来确定它是否实际上每隔一行。我甚至尝试使用strip()rstrip()仍然采用空行。

3 个答案:

答案 0 :(得分:11)

在回答您的问题时,您的空白行来自:

print >> file, line

使用print自动输出一个新行,使用sys.stdout.write或使用尾随逗号来抑制换行符,例如:

print >> file, line,

无论如何,更好的方法是使用itertools.islice

from itertools import islice

with open('input') as fin, open('output', 'w') as fout:
    fout.writelines(islice(fin, None, None, 2))

如有必要,先过滤掉空白行,然后从那里取出每一行......

non_blanks = (line for line in fin if line.strip())
fout.writelines(islice(non_blanks, None, None, 2))

比模数等更容易和灵活。

答案 1 :(得分:1)

尝试查看python库中的csv文件。它非常全面,应该帮助你做更清洁的工作。

答案 2 :(得分:1)

建议:稍微清理你的代码,并且不需要手动增加和声明一个计数器变量,使用:

for(line_index,line)枚举(行):     ...