2017-03-19 2 views
-1

Ich möchte eine CSV-Spalte durchsuchen und mein Skript die Gesamtzahl der Male jedes Handy zurückgegeben wird zurück ... Hier ist mein Code, aber ich bin mir nicht sicher was das Problem ist ...Zählen Sie die Häufigkeit, in der etwas in einer CSV-Spalte auftritt

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 

Ich habe auch den Fehler aufgenommen, den ich erhalte.

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' 

Antwort

0

nicht unterstützter Operandtyp (e) für +: 'int' und 'str'

Dies zeigt an, dass Sie (im Wesentlichen) versuchen, einen Zahlen- und Buchstaben zusammen hinzuzufügen. Python sieht 0 (eine Ganzzahl) und '0' (eine Zeichenfolge) als unterschiedlich und kann sie nicht zusammen hinzufügen. Da Sie als Zähler iPhone (und Android und other) verwenden, möchten Sie zwei Ganzzahlen hinzufügen.


Ich bin auch nicht klar, was Sie zu diesem Zähler hinzufügen möchten, obwohl.

iPhone = iPhone + int(iPhone) 

Wenn iPhone = 0, dann ist das Formel iPhone = 0 + 0. Wenn Sie bereits 2 iPhones gezählt haben, ist diese Formel iPhone = 2 + 2 - Sie verdoppeln den Wert anstatt inkrementieren.

Sie wahrscheinlich nur wollen:

iPhone = iPhone + 1 

oder (shorter)

iPhone += 1 
Verwandte Themen