Python - 按第一个字符删除第一行

时间:2017-12-15 15:23:39

标签: python file file-handling

我有一个'test.txt'文件,其中包含:

(5 rows)
a
(7 rows)
b

我想删除该行,如果该行以'('字符开头。 我的代码在这里:

with open("test.txt", "r") as fin:
    with open("result.txt", "w") as fout:
        for line in fin:
            if line.startswith('('):
                fout.write(line.replace('(',''))
            else:
                fout.write(line)

但返回:

5 rows)
a
7 rows)
b

我想得到结果:

a

b

是否可以使用'starts.with'?

由于

7 个答案:

答案 0 :(得分:1)

您替换一个字符并写下该行。

而不是,你做fout.write('\n')写一个换行符

with open("test.txt", "r") as fin:
    with open("result.txt", "w") as fout:
        for line in fin:
            if line.startswith('('):
                fout.write('\n')
            else:
                fout.write(line)

答案 1 :(得分:1)

您只需要更改 行<{1}}开头的情况。我们要做的只是(换行(write)。我们不希望\n任何事情,因为我们想完全摆脱这条线。

所以,这是完成的代码的样子:

replace

with open("test.txt", "r") as fin: with open("result.txt", "w") as fout: for line in fin: if line.startswith('('): fout.write("\n") else: fout.write(line) 创建为:

result.txt

其中[empty line] a [empty line] b 只代表一个空行但在此答案中更明显

答案 2 :(得分:1)

您可以使用以下步骤

获得所需的输出
  • read模式
  • 打开所需文件
  • 阅读所有行
  • 关闭文件
  • write模式
  • 中再次打开文件
  • 写下所需的行,用\n
  • 替换不需要的行
  • 关闭文件

    f = open("test.txt","r")
    lines = f.readlines()
    f.close()
    
    f = open("test.txt","w")
    
    for line in lines:
       if not line.startswith('('):
          f.write(line)
       else:
           f.write('\n')
    
    f.close()
    

答案 3 :(得分:1)

还可以使用系统命令处理文件。例如在Linux中:

import os
os.system("cat test.txt | sed 's/^(.*$//' > results.txt")

cat读取infile,|将输出通过管道传输到sed,将(开头的行替换为空白,最后>重定向输出outfile。

答案 4 :(得分:0)

替代使用&#34; not&#34;:

with open("test.txt", "r") as fin:
    with open("result.txt", "w") as fout:
        for line in fin:
            if not line.startswith('('):
                fout.write(line + "\n")

答案 5 :(得分:0)

是的,可以使用.startswith()方法执行您想要的操作。你的支票很好。当你找到引起麻烦的比赛时,你会做什么。

with open("test.txt", "r") as fin:
    with open("result.txt", "w") as fout:
        for line in fin:
            if line.startswith('('):
                fout.write('\n') # fout.write(line.replace('(',''))
            else:
                fout.write(line)

如果你想摆脱以&#39;开头的行(&#39;,只是不要把它们写到新文件中......写出一个空行(只是换行)取而代之的是。根据上面的描述,替换以&#39;开头的行(&#39;用空行似乎是你想要的。

如果您不想替换带有空行的&#39;(&#39;行,那么您的代码可能会更简单一些:

            if line.startswith('('):
                fout.write('\n') # fout.write(line.replace('(',''))
            else:
                fout.write(line)

可以

            if not line.startswith('('):
                fout.write(line)

答案 6 :(得分:0)

而不是fout.write(line.replace('(',''))只使用:

fout.write('\n')将用新行字符替换该行,因此代码为:

with open("test.txt", "r") as fin:
    with open("result.txt", "w") as fout:
        for line in fin:
            if line.startswith('('):
                fout.write('\n')
            else:
                fout.write(line)