Finding Specific Table Columns for Non-Matching Items

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

      

This code seems to write out each line multiple times. I am assuming it is looking at every field in every column. How do I specify one column?

So this is the code I'm using right now and it seems like it skips a few lines where the keyword is missing from any column.

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)

      

+3


source to share


1 answer


You can use zip

to get your columns. You can use a generator expression in all

to check that all elements satisfy a condition:

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)

      



But if you just want to write lines that meet this condition, you can use the following code:

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)

      

+1


source







All Articles