получить ошибку при попытке использовать несколько переменных - TypeError: 'в <string>' требуется строка в качестве левого операнда, а не кортежа - PullRequest
0 голосов
/ 03 июня 2019

У меня есть скрипт, который выдает отчет с помощью программного обеспечения (горячий беспорядок) и сортирует его на что-то полезное и приятное для просмотра

. Проблема, с которой я сталкиваюсь, возникает, когда я пытаюсь проанализировать некоторые столбцы инайти переменные и покрасить их в определенный цвет, чтобы выделить ключевые элементы

Я получаю эту ошибку:

TypeError: 'in' требует строку как левый операнд, а не как кортеж

как мне заставить его работать с несколькими элементами Работает нормально, если я просто использую 1 элемент в
", если ячейка не None и ('Item1', 'Item2') в str(cell): "

#Color 01
rownumber = 1

for row in sheet.iter_rows(min_row=2, max_row= sheet.max_row, min_col=1, max_col=4, values_only=True):
    rownumber += 1
    for cell in row:
      if cell is not None and ('Item1','Item2') in str(cell):   
        for row2 in sheet.iter_rows (min_row=rownumber, max_row=rownumber, min_col=1, max_col=12):
            for cell1 in row2:
              cell1.fill = color1_fill

Я пробовал с и без сингла ', и я пробовал с и без двойного "

1 Ответ

1 голос
/ 03 июня 2019

Как говорится в сообщении об ошибке, вы не можете использовать in, чтобы проверить, находится ли кортеж в строке.

Похоже, что вам нужно протестировать их по отдельности и объединить результаты; как вы комбинируете их, зависит от того, что вы ищете (что не ясно). Например,

( ('Item1' in str(cell)) and (('Item2') in str(cell)) )

будет истинным, только если присутствуют оба Item1 и Item2; если вы заботитесь только о том, присутствует ли один или другой, используйте or вместо and.

...