为什么我用f.write得到空行?

时间:2016-03-10 13:51:41

标签: python io

我的代码

sel=[]
for x in range(67):
    sel.append(x)
i=0
fnew=open('data.txt', 'w')
f=open('DATATESTKAREN.txt')
lines=f.readlines()
for line in lines:
    if i in sel:
        fnew.write("%s\n" % line)
    i+=1

我得到的不是我真正想要的  格式:OCCAM2MTDATA_1.0

 MODEL RESPONSE FROM KAREN

 sites:          15

 site-6

 site-7

 site-5

我应该如何重新格式化write

2 个答案:

答案 0 :(得分:1)

readlines的输出会自动将new line\n)添加到每行的末尾。

在您的代码中,您拨打fnew.write("%s\n" % line),然后添加另一个。

如果您只使用fnew.write("%s" % line),那就没事了!

注意:我建议使用.format()代替%s,因为它是"较新的"和建议的方式,但在你的情况下,你只需使用变量写:fnew.write(line)

答案 1 :(得分:0)

我同意GáborErdős关于额外的'\n'

您似乎也只想读取前68行(计数器0到67),这意味着您可以稍微简化一下代码:

i=0
limit = 67
with open('data.txt', 'w') as fnew:
    with open('DATATESTKAREN.txt', 'r') as f:
        for line in f.readlines():
            if i <= limit:
                fnew.write(line)
                i += 1
            else:
                break  # no need to read more lines

HTH, 埃德。