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

Jav*_*ake 6 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
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码只是通过查看modolus值n来判断它是否实际上每隔一行.我甚至尝试过strip(),rstrip()但仍然需要空白.

Jon*_*nts 11

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

print >> file, line
Run Code Online (Sandbox Code Playgroud)

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

print >> file, line,
Run Code Online (Sandbox Code Playgroud)

无论如何,总体上更好的方法是itertools.islice用于:

from itertools import islice

with open('input') as fin, open('output', 'w') as fout:
    fout.writelines(islice(fin, None, None, 2))
Run Code Online (Sandbox Code Playgroud)

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

non_blanks = (line for line in fin if line.strip())
fout.writelines(islice(non_blanks, None, None, 2))
Run Code Online (Sandbox Code Playgroud)

比模数等更方便和灵活.