2016-04-21 19 views
0

Ich habe Cursor verwendet, um eine neue Attributtabelle mit python und arcpy zu erstellen, aber wenn ich versuche, die Zeilen aus den Attributdaten wie z. B. Land, Stadt, & Bevölkerung zu drucken, wird nur eine Stadt gedruckt.Zeile drucken in Python

arcpy.CopyRows_management (folder_path + '\NA_Cities.shp', folder_path + '\Select_Cities.dbf') 
fc = folder_path + '\Select_Cities.dbf' 

The_cursor = arcpy.da.UpdateCursor(fc, ['CNTRY_NAME', 'Population']) 
for row in The_cursor: 
    if row[0] == 'United States' and row[1] < 8000000: 
     The_cursor.deleteRow() 
    elif row [0] == 'Mexico' and row[1] < 8000000: 
     The_cursor.deleteRow() 
    elif row[0] == 'Canda' and row[1] < 3000000: 
     The_cursor.deleteRow() 
print row 

Hier ist mein Ergebnis

Selecting locations 

Please Stand By... 

Removing the data that does not meet the requirements 

[u'Canada', 25000.0] 

Finished identifying the cities 

Vielen Dank im Voraus für jede Beratung!

+0

Sie befinden sich in einer for-Schleife. Sobald eine der Bedingungen erfolgreich ist, springt loop zum nächsten Element in der Liste, in diesem Fall zum Abfrageergebnis. was auch immer es zurückkommt. –

+0

Canda ... in Ihrem letzten elif ... bevorzugen wir Kanada –

+0

Fragen, die Debugging-Hilfe suchen, müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten ** Code enthalten, der für die Reproduktion erforderlich ist **. Sie zeigen nicht an, wo Ihre 'print'-Anweisung ist und daher können wir Ihnen nicht sagen, wie Sie diese beheben können. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). – Erica

Antwort

0

Um jede Zeile in der Schleife zu drucken, muss die print row Anweisung innerhalb der Schleife sein.

for row in The_cursor: 
    print row 
    if row[0] == 'United States' and row[1] < 8000000: 
     The_cursor.deleteRow() 
    elif row [0] == 'Mexico' and row[1] < 8000000: 
     The_cursor.deleteRow() 
    elif row[0] == 'Canada' and row[1] < 3000000: 
     The_cursor.deleteRow() 

Wenn Sie nur gelöschte Zeilen gedruckt werden soll, setzen, dass print Aussage innerhalb der if/elif conditionals.

+0

Vielen Dank !! Ich habe versucht, Druck überall außer oben für die Aussage –