删除包含特定值的行和奇数列

1 投票
1 回答
1245 浏览
提问于 2025-04-17 16:14

我正在尝试在Python中处理两个文本文件。我的目标是首先删除所有包含数字3或4的行。完成这一步后,再完全删除前6列。我已经找到了如何删除这6列的方法:

f = open("filename.txt", "r")
g = open("filename1.txt", "w")

for line in f:
    if line.strip():
        g.write("\t".join(line.split()[6:]) + "\n")
f.close()
g.close()

但是,我不知道怎么根据重复的字符或出现的次数来删除行(在这个例子中,如果一行中出现数字3或4,就应该完全删除这一行)。最后,我还想删除所有的奇数列,但不是完全删除它们。实际上,就是把奇数列删除,然后把它们添加到文本文件的末尾(也就是写入一个新的文本文件,所有内容都会写入下一个文本文件)。

1 个回答

1
lines = [line.strip() for line in open('file.txt')]
nlines=[]
for line in lines:
    if 3 not in map(int,line.split()) and 4 not in map(int,line.split()): nlines.append(line)
for x in nlines:
    y=x.split()
    y=y[1::2]
    print ' '.join(y)

file.txt

3 4 5 6 7 12 34 56
2 5 6 7 8 11 10 7
4 5 6 7 8 44 55 12
33 66 88 99 79 1 2 5

通过去掉包含数字3或4的行,以及去掉奇数列

输出结果

5 7 11 7
66 99 1 5

撰写回答