2017-10-20 26 views
-1

我正在編寫一個腳本來搜索數據庫中的過濾器,並將結果與​​給予我的xlsx文件進行比較。由於給定xlsx的格式,我的篩選器列表有時包含字符串的子列表,有時還包含相同位置的字符串。當我到了實際的比較我嘗試使用此代碼來檢查子表運行特定的子表檢查的長度Python試圖獲得子列表的長度,但有時會得到字符串的長度。需要解決方法

if len(filters[x][1])>1: 

過濾器列表中使用的代碼

while(tpSheet.cell(i,0).value!=''): 
    filterNum = tpSheet.cell(i,0).value.split(':') 
    if tpSheet.cell(i,2).value.startswith('in'): 
     temp = tpSheet.cell(i,2).value[3:].replace(' ','').replace('in',',').split(',') 
    filters.append([filterNum[0],[tpSheet.cell(i,1).value,temp[1]],[temp[0],temp[2]]]) 
else: 
    filters.append([filterNum[0],[tpSheet.cell(i,1).value],tpSheet.cell(i,2).value]) 
i+=1 

此塊構建我不太清楚如何列表和字符串區分用於此目的

+1

查找如何檢查對象的類型?這並不難。 – Prune

+0

我實際上嘗試過isinstance幾次以及類型,但沒有任何一個運氣,但可能需要更多的實驗 – Eris

+0

甚至更​​好,發佈失敗的嘗試作爲[最小,完整,可驗證的例子](http:// stackoverflow。 COM /幫助/ MCVE)。 – Prune

回答

0

也許這個例子可以幫助你理清你的類型的歧視:

測試= [123,無, 「123」,[123, 「123」]]

for item in test: 
    if isinstance(item, int): 
     print item, "is an integer" 
    elif isinstance(item, str): 
     print item, "is a string" 
    elif isinstance(item, list): 
     print item, "is a list" 
    else: 
     print item, "is something else" 

輸出:

123 is an integer 
None is something else 
123 is a string 
[123, '123'] is a list 
相關問題