2

我写了这段代码:

f = open('example.txt','r')
lines = f.readlines()

for i, line in enumerate(f):
if i < 3:
   lines = ['LC '+line for line in lines]
   with open('./example.txt', 'w') as f:
      f.writelines(lines)
      f.close()
elif i < 5:
    lines = ['LB '+line for line in lines]
    with open('./example.txt', 'w') as f:
        f.writelines(lines)
        f.close()
elif i > 6:
    break

 f.close()

我有一个 11 行的文件。我想从每一行开始写一些东西。3 第一行的单词不同,其他 2 的单词不同。你能帮我看看我做错了什么吗?

4

3 回答 3

2
lines = [("LC" if i < 3 else "LB")+line for i,line in enumerate(lines)]

可能会成功

于 2012-10-10T14:10:36.937 回答
1

看来您的第二个条件有点混乱。如果你在前三行写了一些东西,然后在第四行和第五行写了一些东西,那么你的条件需要改变。

尝试将第二个 elif 更改为:

elif i <= 5 and i >=3:

另外,忠告一下,您不必每次都打开文件进行写入。您可以将第一行设置为:

f = open('example.txt','rw')

这将打开文件,为您提供一个句柄,并允许您对其进行读写。

于 2012-10-10T14:11:19.393 回答
1

为了lines = ['LC '+line for line in lines]

您正在写入LC每一行,而不仅仅是前 3 行。

lines = ['LB '+line for line in lines]同样的事情

首先,您可以在行中添加适当的前缀,然后您可以实际编写行。像这样的东西:

for i, line in enumerate(lines):
  if i < 3:
     # add prefix to line
  if 3 < i < 5:
     # add correct prefix

现在您的行具有正确的前缀,您可以将它们全部写入文件

于 2012-10-10T14:08:24.360 回答