我正在尝试删除以数字开头的文件中的所有行。我想出了下面的代码块,但它没有用。
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 :(得分: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