2016-06-07 2 views
0

Я нашел несколько похожих вопросов в Интернете о том, как найти слово в определенном столбце в файле CSV, однако я не обнаружил, что при проверке нескольких слов. Вот проблема:Как проверить, содержатся ли несколько слов в столбце CSV?

words = ‘something’ 
for row in data: 
    if words not in row[‘column header name’]: 
     writer.writerow[row] 

Приведенный выше код печатает все данные в файл CSV. Он также проверяет, находится ли что-то -... в строке ['имя заголовка столбца'], а затем пропускает эту строку. Например, в этом столбце каждая ячейка содержит строки, такие как «something-asdas» или «something-aaaa». Он проверяет часть этой строки и пропускает ее.

Цель:

words = (‘something’, 'word' , 'dada') 
for row in data: 
    if words not in row[‘column header name’]: 
     writer.writerow[row] 

Когда я пытаюсь сделать это, я получаю TypeError: «в» требует строку в качестве левого операнда, а не кортеж. Любые идеи о том, как исправить эту проблему? Я попытался выполнить итерацию через кортеж, но тогда у моего файла csv будут дубликаты.

ответ

1

Вам нужно встроенный any() проверки, если любое из слов в кортеже присутствует в строке:

words = ("something", "word" , "dada") 
for row in data: 
    # skipping rows containing any of the "words" 
    if not any(word in row["column header name"] for word in words): 
     writer.writerow(row) 

Конечно, это предполагает, что row является словарь, и вы использовали DictReader ,

+0

Ого, я пробовал использовать любой() раньше, но не работал. Однако ваши ответы работают! Спасибо. – shishh03

Смежные вопросы