使用python删除所有以数字开头的行

时间:2016-12-04 03:08:55

标签: python file

我正在尝试删除以数字开头的文件中的所有行。我想出了下面的代码块,但它没有用。

output = open("/home/test1/Desktop/diff2.txt", "w")

with open("/home/test1/Desktop/diff.txt") as input:
    for line in input:
    if not line.lstrip().isdigit():
        output.write(line)
        print(line)

    input.close()
    output.close()
    exit();

它仍然会打印出所有以输出文件中的数字开头的行

3 个答案:

答案 0 :(得分:0)

您在整行上调用is_digit,只有当该行完全由数字组成时才会返回True

with open('input.txt') as inp, open('output.txt', 'w') as out:
  out.write(''.join(l for l in inp if l[0] not in '123456789'))

答案 1 :(得分:0)

lstrip().isdigit()不检查你的行中的第一个字符是数字。你应该取第一个字符(如果该行有字符)并在该字符上检查isdigit()

if line == '' or not line[0].isdigit():
    output.write(line)

答案 2 :(得分:0)

以下脚本在我的快速测试用例中运行正常:

output = open("test.out", "w")

with open("test.in") as input:
    for line in input:
        if not line.lstrip()[0].isdigit():
            output.write(line)
            print(line)

output.close()

输入:

1test
2test
hello
3test
world
4something

提供输出:

hello
world