删除csv文件上的行,具体取决于模式python

时间:2014-04-22 11:11:09

标签: python csv

我是使用python处理csv文件的新手,我想编写允许我执行以下操作的代码:我有一个模式: pattern="3-5;7;10-16"(可能会有所不同) 我想删除(在这种情况下)第3行,第5行,第7行和第10行到第16行 有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您不能简单地删除csv中的行。相反,您必须将其读入,然后使用可接受的值将其写回。以下代码有效:

import csv

pattern="3-5;7;10-16"

off = []
for i in pattern.split(';'):
    if '-' in i:
        off += range(int(i.split('-')[0]),int(i.split('-')[1])+1)
    else:
        off += [int(i)]

with open('test.txt') as f:
    reader = csv.reader(f)
    reader = [','.join(item) for i,item in enumerate(reader) if i+1 not in off]

print reader

with open('input.txt', 'w') as f2:
    for i in reader:
        f2.write(i+'\n')