أكثر

انقسام على اندفاعة في بيثون

انقسام على اندفاعة في بيثون


لذا فإنني أتطلع إلى إجراء تقسيم على سمة تشبه 45-4. الآن كل السمات لها قيم.

هنا هو رمز بلادي حتى الآن:

استيراد fme import fmeobjects def processFeature (feature): f_type = feature.getAttribute ('F_TYP') if f_type: f_type.split ('-') Height = f_type [0] Class = f_type [-1] feature.setAttribute ("الارتفاع "، الارتفاع) feature.setAttribute (" الفئة "، الفئة)

يبدو أنه يعمل ولكنه يعطيني كمثال فقط الارتفاع = 4 والفئة 4. أعتقد أنني بحاجة إلى أخذ كل شيء أمام اندفاعة عندما تكون موجودة للارتفاع وكل شيء بعد اندفاعة الفصل. أحتاج إلى عبارة if للتعامل مع عدم وجود قيم.


أولاً ، أنت لا تخزن نتيجة ملف.ينقسم()في أى مكان. ثانيًا ، تقوم العبارات التي تخصص قيمًا للطول والفئة بتعيين الحرفين الأول والأخير من سلسلة السمة على التوالي (وهذا هو السبب في مثالك على '45-4ينتج عن الارتفاع والطبقة كلاهما 4) ، بدلاً من المكونين اللذين تريدهما. باستخدام الكود أدناه ، يجب أن تحصل على النتيجة المتوقعة:

استيراد fme استيراد fmeobjects def processFeature (ميزة): f_type = feature.getAttribute ('F_TYP') إذا كان f_type: f_type_parts = f_type.split ('-') الارتفاع = f_type_parts [0] Class = f_type_parts [-1] feature.setAttribute ( "الارتفاع" ، الارتفاع) feature.setAttribute ("الفئة" ، الفئة)

بدلاً من ذلك ، يمكنك إزالة ملفf_type_parts = f_type.split ('-')بيان ، وتغيير تخصيصات الارتفاع والفئة كما يلي:

الارتفاع = f_type.split ('-') [0] Class = f_type.split ('-') [- 1]

إذا كنت في FME ، أقترح استخدام AttributeSplitter مع - كمحدد. ثم انقر بزر الماوس الأيمن على السمة الناتجة _list {} المعروضة على منفذ AttributeSplitter OUTPUT على اللوحة القماشية ، واعرض عنصرين. بعد ذلك ، استخدم AttributeRenamer لإعادة تسمية _list {0} إلى Height و _list {1} إلى Class.