2017-03-19 2 views
-1

Je voudrais rechercher une colonne csv et avoir mon script retourne le nombre total de fois que chaque téléphone cellulaire est utilisé ... Voici mon code, mais je ne suis pas sûr quel est le problème ...Compter le nombre de fois que quelque chose se passe dans une colonne csv

import arcpy 
fc = "C:\Script\SAMPLES\SAMPLES.csv" 
field = "phone" 
iPhone = 0 
Android = 0 
other = 0 
cursor = arcpy.SearchCursor(fc) 
for row in cursor: 
    #print(row.getValue(field)) 
    if row.getValue(field)=='iPhone': 
     iPhone = iPhone + str(iPhone) 
     print "The number of iPhones: " + iPhone 
    elif:  
     Android=Android + str(Android) 
     print "The number of Androids: " + Android 
    elif: 
     other=other + str(other) 
     print "The number of other: " + other 

J'ai également inclus l'erreur que je reçois.

Traceback (most recent call last): 
    File "C:\Python27\ArcGIS10.4\Lib\site- packages\pythonwin\pywin\framework\scriptutils.py", line 326, in RunScript 
    exec codeObject in __main__.__dict__ 
    File "C:\Script\searchcursor.py", line 11, in <module> 
    iPhone = iPhone + str(iPhone) 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

Répondre

0

type d'opérande non pris en charge (s) pour +: 'int' et 'str'

Cela indique que vous êtes (essentiellement) d'essayer d'ajouter un numéro et lettre ensemble. Python voit 0 (un entier) et '0' (une chaîne) comme différents, et ne peut pas les ajouter ensemble. Puisque vous utilisez iPhone (et Android et other) comme compteurs, vous voudrez ajouter deux entiers ensemble. Cependant, je ne suis pas sûr de ce que vous essayez d'ajouter à ce compteur.

iPhone = iPhone + int(iPhone) 

Si iPhone = 0, alors cette formule est iPhone = 0 + 0. Si vous aviez déjà compté 2 iPhones, cette formule est iPhone = 2 + 2 - vous doublez la valeur plutôt que d'incrémenter.

Vous voulez probablement:

iPhone = iPhone + 1 

ou (shorter)

iPhone += 1