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

问题描述:

我试图删除以数字开头的文件中的所有行。我想出了下面这段代码,但它不起作用。删除所有以数字开头的行使用python

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(); 

它最终还是打印与输出文件

+0

你能提供一个文件的例子吗? – JosephGarrone

+0

您在for循环的内容中发布了一个缩进错误。 – theorifice

+0

是的,我将编辑它的问题 – answerSeeker

这下面的脚本作品对我的快速测试案例精:

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 
+1

谢谢,这解决了我的问题。 – answerSeeker

号您对整个排队叫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')) 

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

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