每读第二行并打印到新的fi

2024-09-27 09:33:35 发布

您现在位置: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值来决定它是否实际每一行。我甚至尝试了^ {CD2}}和^ {CD3}},它们仍然采用空行。


Tags: 文件csvinnewforiflineopen
3条回答

建议:若要稍微清理代码,并消除手动递增和声明计数器变量的需要,请使用:

对于枚举(行)中的(行索引,行): ...

尝试查看python库中的csv文件。它是相当全面的,应该可以帮助你做你想做的更干净。

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

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))

比用模量之类的材料堆渣方便灵活得多。

相关问题 更多 >

    热门问题