Python "in" in einer IF-verzweigen funktioniert nicht?

1 Antwort

Steht denn in der nebenliegenden Zelle (Spalte 3, Reihe 2) überhaupt ein Wert?

Ich könnte mir nämlich ziemlich gut vorstellen, dass dem nicht so ist und dein Skript stattdessen in eine Endlosschleife hineinläuft. Wenn value daraufhin den Wert None liefert, was laut Dokumentation der Standardwert für leere Zellen wäre, könnte sich ein Laufzeitfehler dazu gesellen, da der in-Operator nicht auf den None-Wert angewandt werden kann.

Ich würde für die Abfragen also eine zusätzliche Prüfung einbauen:

if value not None and "imgur" in value:

und hinterfragen, ob du nicht eher die Variable row inkrementieren wolltest.


cobblclasher 
Beitragsersteller
 03.06.2021, 00:21

Vielen Dank schonmal.
Ja in den Zeilen sind Werte. Ich habe mir die Werte mehrfach ausgeben lassen.

Ich habe "if "imgur" in value:" durch deine Codezeile ersetzt nun geht der Code bei " if value != clipboard:" nicht weiter und es wird die nicht die freie Zeile gefunden.

0
regex9  03.06.2021, 00:40
@cobblclasher

Dann wäre es doch m.E. einfacher, es so zu schreiben:

def check_value_existence():
  row = 2
  column = 2
  value = sheet.cell(column, row).value

  while value is not None and "imgur" not in value:
    column += 1
    value = sheet.cell(column, row).value

  clipboard = Tk().clipboard_get()

  if value != clipboard:
    sheet.update_cell(column, row, clipboard)

Die Schleife läuft so lange, bis sie in einer Spalte landet, deren Wert nicht das Wort imgur beinhaltet. In dieser wird gegebenenfalls der Wert aus der Zwischenablage eingefügt.

Andererseits könnte man das noch weiter verkürzen, indem man die Schleife so lange laufen lässt, bis sie in einer Spalte landet, die entweder leer ist oder dem Wert der Zwischenablage entspricht.

# ...
clipboard = Tk().clipboard_get()

while value is not None and value != clipboard:
  # ...

sheet.update_cell(column, row, clipboard)

In dem Fall wird diese Zelle einfach überschrieben.

1
cobblclasher 
Beitragsersteller
 03.06.2021, 18:03
@regex9

Vielen Dank. Mit dem unteren Zusatz funktioniert es.

0