Temat: Python | wyświetlanie etykiet

Pytanie od kolegi bez profilu Goldenline: :)

Mam problem z odpowiednim wyświetleniem etykiet z tabeli atrybutów w niestandardowy sposób.

W poszczególnych kolumnach w tabeli atrybutów brak danych zapisany jest jako „0”, natomiast wartości rzeczywiste jako 1 (kolumna 'tabel1'), 2 (kolumna 'tabel2') oraz 3 (kolumna 'tabel3').
Po wpisaniu poniższej komendy etykieta wyświetli się jako „12 0”, „1 0 3”, „0 0 3” itd.

def FindLabel ( [Tabel1], [Tabel2], [Tabel3] ):
return [Tabel1] + " " + [Tabel2] + " " + [Tabel3]

(Nazwy kolumn są przykładowe)

Obrazek



Obrazek


Jednak chciałbym aby nie wyświetlane były zera, czyli etykiety wyglądałyby odpowiednio: „A12”, „1 3”, „2”.
Znalazłem poniższy sposób:

def FindLabel ([Tabel1], [Tabel2], [Tabel3] ):
if [Tabel1] == "1" and [Tabel2] == "0" and [Tabel3] == "0":
return [Tabel1]
elif [Tabel1] == "2" and [Tabel2] == "0" and [Tabel3] == "C":
return [Tabel1] + " " + [Tabel3]
else:
return [Tabel1] + " " + [Tabel2] + " " + [Tabel3]

Problem w tym, że w rzeczywistości kolumn mam kilkanaście, a więc takich wariantów będzie kilkaset.

Czy da się to zrobić w prostszy sposób?Ten post został edytowany przez Autora dnia 09.07.15 o godzinie 13:20
Dariusz Tanajewski

Dariusz Tanajewski "Odkładanie spraw na
później to złodziej
marzeń"

Temat: Python | wyświetlanie etykiet

def FindLabel ( [Tabel1], [Tabel2], [Tabel3] ):
label= [Tabel1] + " " + [Tabel2] + " " + [Tabel3]
label=label.replace(' 0','') #funkcja zamienia wszystkie zera w zmiennej label na pusty ciąg znakowy ''.
return label

działa?

edit.
1) zapomniałem nadpisać zmienną 'label'
2) dopisałem spację przed zerem. Ten post został edytowany przez Autora dnia 09.07.15 o godzinie 14:42
Karol Stachura

Karol Stachura Nie ma na świecie
rzeczy niemożliwych
- są tylko mało
pra...

Temat: Python | wyświetlanie etykiet

Raczej dla wartości każdej tabeli osobno przed stworzeniem wartości
sklejonej daj .replace('0',' ')
Inaczej stracisz spacje w miejscach gdzie masz 0 a w założeniu zamiast zero ma być spacja.
Bez spacji w funkcji np przy wartości 10 na całym ciągu zsumowanym będzie problem.Ten post został edytowany przez Autora dnia 09.07.15 o godzinie 15:05
Dariusz Tanajewski

Dariusz Tanajewski "Odkładanie spraw na
później to złodziej
marzeń"

Temat: Python | wyświetlanie etykiet

wydaje mi się, że w założeniach zamiast zera ma być pusty ciąg. Widać to po warunkach w IF/ELIF. Zamieniając tylko zera na puste ciągi, mielibyśmy dwie spacje obok siebie. Zamiana ' 0' (spacja zero) na pusty ciąg, eliminuje jedną ze spacji a jednocześnie zabezpiecza użytkownika przed podmienieniem wartości innych niż zerowe na ciągi puste, bo jeśli label = '10 0 0 0 100 101' to zera w liczbach 10, 100 i 101 nie spełniają warunków replace().Ten post został edytowany przez Autora dnia 09.07.15 o godzinie 16:23
Karol Stachura

Karol Stachura Nie ma na świecie
rzeczy niemożliwych
- są tylko mało
pra...

Temat: Python | wyświetlanie etykiet

ok, patrzyłem na przykład u góry a nie na dole. Teraz dopiero miałem czas spojrzeć na to spokojnie. Masz rację.

Następna dyskusja:

Algorytmy do automatycznego...




Wyślij zaproszenie do