Daha çox

Pythonda bir tire ilə bölün


Yəni 45-4-ə bənzər bir atributda bir split etmək istəyirəm. İndi bütün atributların dəyərləri var.

indiyə qədər kodum:

idxal fme idxal fmeobjects def processFeature (xüsusiyyət): f_type = feature.getAttribute ('F_TYP') əgər f_type: f_type.split ('-') Boy = f_type [0] Class = f_type [-1] feature.setAttribute ("Height ", Height) feature.setAttribute (" Class ", Class)

Görünür işləyir, ancaq mənə yalnız hündürlüyü = 4 və sinif 4-ü nümunə gətirir. Güman edirəm ki, hündürlüyü olduqda hər şeyi tire önünə və sinif üçün tire sonrası hər şeyi götürməliyəm. Heç bir dəyərlə məşğul olmaq üçün if ifadəsinə ehtiyacım var.


Birincisi, nəticəsini saxlamırsınız.split ()hər yerdə. İkincisi, Height və Class-a dəyərlər ayıran ifadələr əslində atribut sətrinin birinci və son simvollarını təyin edirlər (buna görə də '45-4'İstədiyiniz iki komponentdən daha yüksək və hər ikisi də 4) ilə nəticələnir. Aşağıdakı kodu istifadə edərək gözlənilən nəticəni əldə etməlisiniz:

idxal fme idxal fmeobjects def processFeature (xüsusiyyət): f_type = feature.getAttribute ('F_TYP') əgər f_type: f_type_parts = f_type.split ('-') Boy = f_type_parts [0] Class = f_type_parts [-1] feature.setAtt "Boy", Boy) feature.setAttribute ("Class", Class)

Alternativ olaraq,f_type_parts = f_type.split ('-')bəyanat və Boy və Sinif üçün tapşırıqları aşağıdakı kimi dəyişdirin:

Boy = f_type.split ('-') [0] Sınıf = f_type.split ('-') [- 1]

FME-də olsanız, AttributeSplitter ilə - ayırıcı kimi istifadə etməyi təklif edərdim. Sonra kətandakı AttributeSplitter OUTPUT portunda göstərilən nəticə _list {} atributuna sağ vurun və 2 elementi göstərin. Bundan sonra, AttributeRenamer istifadə edərək, _list {0} -ni Boy, _list-i {1} Sınıf adlandırın.