Več

Seznami v kalkulatorju polja v ArcMap?

Seznami v kalkulatorju polja v ArcMap?


Mi lahko kdo pove, zakaj to ne deluje. Poskušam pretvoriti vse primerke '02ND' v '2ND', na primer, kjer so nekatera vnosna polja (f1) že pretvorjena, druga pa ne.

V kodnem bloku:

def calc (f1): list = ['01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH', '09TH'] za i na seznamu: če i v f1: f1 = f1.replace ('0', ") return f1.replace ('0',") else: return f1

Preprosto pokličem funkcijo calc, da vnesem novo polje.


Lahko samo preverite, ali je vaša vrednost polja na seznamu za odstranjevanje:

def remove_zero (polje): remove_list = ['01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH', '09TH'], če je polje na seznamu remove_list: field = field.replace ('0', ") return field else: return field

Potem boste želeli narediti:

remove_zero (! FIELDNAME!)

Nekaj ​​razlage, zakaj funkcija OP ne deluje:

f1 = niz

list = seznam

Ko ponavljate seznam, boste za vsakega člana seznama dobili enega pozitivno ali negativno odziv. Torej ima vaš seznam devet članov; dobili boste devet odgovorov (+ in -). Kaj potem calc se bo funkcija vrnila, celih devet odgovorov ali en? Seveda bo funkcija python v tem primeru vrnila samo eno. Od samo en vračilo je tako dovoljeno calc funkcija vrača odgovor za zadnjega člana, tj.'09TH' in dobili boste vse primerke '09TH' brez vodilnih "0", ampak nič o vseh drugih primerih, na primer '01ST ',' 02ND ',' 03RD ',' 04TH ',' 05TH ',' 06TH ',' 07TH ',' 08TH '.

Rešitev:

Ni potrebe po ponavljanju po seznamu, samo preverite, ali je f1 na seznamu.

def calc (f1): list = ['01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH', '09TH'], če je f1 na seznamu: f1 = f1.replace ('0', ") return f1 else: return f1

N.B. Izogibajte se deklaraciji spremenljivk z rezerviranimi besedami. Določili ste a spremenljivka seznama poimenovano seznam, seznam je rezervirana beseda python.


V tem primeru bi lahko dosegli enako! FieldName! .Lstrip ("0").


Poglej si posnetek: Incredible machinist trick: Cube in a cube