2017-10-20 50 views
-1

J'écris un script pour rechercher une base de données pour les filtres et comparer le résultat à un fichier xlsx qui me est donné. En raison du format du xlsx donné, ma liste de filtres contient parfois une sous-liste de chaînes et parfois une chaîne dans la même position. Quand je reçois des comparaisons réelles j'essaie de vérifier la longueur de la sous-liste pour exécuter des contrôles spécifiques aux sous-listes en utilisant ce codePython essayant d'obtenir la longueur de la sous-liste mais obtenir la longueur de la chaîne à l'occasion. Besoin d'un travail autour

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

la liste des filtres est construit en utilisant ce bloc de code

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 

Je ne suis pas tout à fait sûr de savoir comment faire la différence entre les listes et les chaînes à cette fin

+1

chercher comment vérifier le type d'un objet? Ce n'est pas si dur. – Prune

+0

J'ai effectivement essayé isinstance quelques fois ainsi que le type, mais n'a eu aucune chance avec l'un ou l'autre mais plus d'expérimentation est probablement nécessaire – Eris

+0

Encore mieux, postez votre tentative échouant comme [Exemple minimal, complet, vérifiable] (http: // stackoverflow. com/help/mcve). – Prune

Répondre

0

peut-être cet exemple vous aidera à trier votre discrimination de type:

test = [123, None, "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" 

Sortie:

123 is an integer 
None is something else 
123 is a string 
[123, '123'] is a list