根据Python中的条件删除行

时间:2018-09-28 06:00:05

标签: python-3.x

我正在尝试从列表中排除符合某些条件的行。例如,以“ C”而不是数字开头的标识符。我可以看到所有符合此条件的行,但不确定如何删除/排除这些行。

我知道.remove()可以工作,但是我没有正确调用列表。

#!/usr/bin/env python
import sys
import re
import csv


def main(argv):
    my_iterator = iter(sys.stdin.readline, "")
    next(my_iterator)

    for row in csv.reader(my_iterator):
        my_list = my_iterator

        #Delete rows that have InvoiceNo that start with C
        if re.match(r'C', row[0]):
            my_list.remove()
            print("yes")

2 个答案:

答案 0 :(得分:0)

仅当第一列不是以'C'开头时,才可以使循环将行追加到列表中:

my_list = []
for row in csv.reader(my_iterator):
    if not row[0].startswith('C'):
        my_list.append(row)

答案 1 :(得分:0)

您可以在此处利用列表理解和startswith()来建立新列表;

my_list = [row for row in csv.reader(my_iterator) if not row[0].startswith('C')]