【问题标题】:Writing specific lines of a text file编写文本文件的特定行
【发布时间】:2012-10-10 14:04:24
【问题描述】:

我写了这段代码:

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 的单词不同。你能帮我看看我做错了什么吗?

【问题讨论】:

  • “我想从每一行开始写一些东西。” 我觉得这个规范很模糊。你能更准确地说出你想做什么和现在得到什么吗?
  • @dmckee 在前 3 行中是单词 LC,在另一行中是单词 LB。如果 我在声明中遇到麻烦
  • @user1617766 for 循环的主体需要缩进

标签: python


【解决方案1】:
lines = [("LC" if i < 3 else "LB")+line for i,line in enumerate(lines)]

可能会成功

【讨论】:

  • [("LC%d"%i)+line for i,line in enumerate(lines)]
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您的第二个条件似乎有些混乱。如果你在前三行写了一些东西,然后在第 4 行和第 5 行写了一些东西,那么你的条件需要改变。

    尝试将第二个 elif 更改为:

    elif i <= 5 and i >=3:
    

    还有一句忠告,你不需要每次都打开文件来写。您可以将第一行设置为:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2011-06-10
      相关资源
      最近更新 更多