搜索表的特定列以查找不匹配的项

时间:2015-04-29 09:15:11

标签: python csv comparison

with open("test.txt", "r") as test:
    reader = csv.reader(test, delimiter="\t")
    writer = csv.writer(table, delimiter="\t")
    for row in reader:
       for field in row:
            if field not in keywords:
                writer.writerow(row)
                break

似乎这段代码多次写出每一行。我想它会查找每列中的每个字段。如何指定单个列?

所以这就是我现在使用的代码,它似乎错过了几行,其中关键字不存在于任何列中。

table = open("table.txt", "w")
with open("test.txt", "r") as test:
    reader = csv.reader(test, delimiter="\t")
    writer = csv.writer(table, delimiter="\t")
    for row in reader:
        if all(field not in keywords for field in row):
            writer.writerow(row)

1 个答案:

答案 0 :(得分:1)

您可以使用zip来获取列。您可以在all函数中使用生成器表达式来检查所有元素是否满足条件:

with open("test.txt", "r") as Spenn,open("test.txt", "r") as table:
    reader = zip(*csv.reader(Spenn, delimiter="\t"))
    writer = csv.writer(table, delimiter="\t")
    for row in reader:
        if all(field not in keywords for field in row):
            writer.writerow(row)

但是如果您只想编写符合条件的行,可以使用以下代码:

with open("test.txt", "r") as Spenn,open("test.txt", "r") as table:
    reader = csv.reader(Spenn, delimiter="\t")
    writer = csv.writer(table, delimiter="\t")
    for row in reader:
        if all(field not in keywords for field in row):
            writer.writerow(row)