2016-08-07 191 views
0

我的工作簿每行的列數有所不同。我想在一個長字符串中找到一個整數。如果列數始終相同,我的代碼就可以工作。不幸的是,當柱子數量不同時,由於某些單元格是空的,所以出現錯誤。 (AttributeError:'NoneType'對象沒有屬性'find')查找一行中的行數 - Python openpyxl

我怎樣才能找出每一行的colums數量來避免這個錯誤?非常感謝任何其他方法來發明這個問題。

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 

非常感謝您的幫助!

+0

你爲什麼要增加'一個k',然後立即將其設置爲2? – DeepSpace

+0

感謝您的評論。這是一個格式錯誤。 k = 2,然後在while循環後遞增並設置回2 – Philipp

+0

只需向您的代碼添加條件'if stringresult is None'。此外,您的代碼可以更好地使用openpyxl API和更多Pythonic。 –

回答

0

我解決了這個問題,如果一個問題:

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