2016-08-07 114 views
0

Meine Arbeitsmappe hat eine unterschiedliche Anzahl von Spalten für jede Zeile. Ich möchte eine Ganzzahl in einer langen Zeichenfolge finden. Mein Code funktioniert, wenn die Anzahl der Spalten immer gleich ist. Wenn die Anzahl der Spalten unterschiedlich ist, tritt ein Fehler auf, da einige der Zellen leer sind. (AttributeError: 'NoneType' -Objekt hat kein Attribut 'find')Anzahl der Zeilen in einer Zeile suchen - Python openpyxl

Wie kann ich die Anzahl der Spalten für jede einzelne Zeile herausfinden, um diesen Fehler zu vermeiden? Jede andere Methode, dieses Problem zu erfinden, wird sehr geschätzt.

num_rows = List.max_row 
num_cols = List.max_column 
while i < (num_rows + 1): 
    filename = List.cell(row=i, column=1).value 
    worksheet_AS.cell(row=i, column=1, value=filename) 
    while k < (num_cols+1): 
     stringresult = List.cell(row=i, column=k).value 
     start = stringresult.find("AS:i:") 
     worksheet_AS.cell(row=i,column=k,value=int(stringresult[start+5:start+8])) 
     k = k + 1 
    k = 2 
    i=i+1 

Vielen Dank für Ihre Hilfe!

+0

Warum sind Sie 'nach dem anderen, es zu 2 Einstellung dann sofort k' Inkrementieren? – DeepSpace

+0

Danke für den Kommentar. Das war ein Formatierungsfehler. k = 2, wird dann inkrementiert und nach der while-Schleife auf 2 zurückgesetzt. – Philipp

+0

Fügen Sie einfach einen bedingten 'if stringresult is not None' hinzu. Außerdem könnte Ihr Code die openpyx API und mehr Pythonic besser nutzen. –

Antwort

0

löste ich das Problem mit einer if Frage:

while k < (num_cols+1): 
     stringresult=List.cell(row=i, column=k).value 

     if type(stringresult) is str: 
      start=stringresult.find("PI:i:") 
      end=stringresult.find("PI:f:") 
      worksheet_PI.cell(row=i,column=k,value=int(stringresult[start+5:end])) 

     k=k+1 

    k=2