2016-12-22 1 views
1

Ich habe Strings wie folgt aus:Jinja2/Python - Strings Ganze Zahlen zum Vergleich

Team Li vs. Team Aguilar || SCORE (W-L-T): 5-4-0  
Favors Flavors vs. Cupcakes For Breakfast || SCORE (W-L-T): 11-2-1 

ich den Text grün sein möchte, wenn der „W“ Wert größer als der Wert „L“ ist, und rot, wenn der "L" -Wert größer als der "W" -Wert ist. Ich habe den folgenden Code in Jinja2, der für den ersten Fall funktioniert, aber nicht für den zweiten Fall. Die Zeichenfolge wird fälschlicherweise als rot angezeigt, obwohl die Spalte "W" größer als die Spalte "L" ist.

Ich verstehe, dass mein Code fehlschlägt, weil die zweite Zeichenfolge 2 Ziffern hat. Gibt es eine gute Möglichkeit, dieses Problem zu beheben?

Dies ist ein Jinja2 Problem, Antworten in Jinja2 wären großartig. Eine Python-Lösung funktioniert jedoch möglicherweise auch.

+0

Haben Sie versucht, Aufspalten des 'item' Zeichenkette auf das Zeichen '' -'' und vergleiche diese Ergebnisse? Wenn nicht, suchen Sie nach der 'str.split()' Methode. – Wombatz

+0

Es mag irrelevant erscheinen, aber erhalten Sie diese Daten so, wie sie sind, oder komponieren Sie diese "T1 vs T2 || SCORE "zeichnet sich vor dem Senden an die Vorlage? – bereal

+0

@Wombatz Danke. Das sieht nach dem Weg aus. Werde es versuchen. –

Antwort

1

Sie können die Elemente mit zwei Splits extrahieren (Variablen für Klarheit verwenden):

  • zuerst die letzte Spalte (split Leerzeichen) erhalten Element:

    {% set results = item.split()[-1] %} 
    
  • dann zu bekommen das erste und das zweite der Ergebnisse (durch den Strich getrennt):

    {% set w = results.split('-')[0]|int %} 
    {% set l = results.split('-')[1]|int %} 
    

Der vollständige Code (auch mit einer Bedingung nur Zeilen mit SCORE zu verarbeiten, um die ein von Ihrem jetzt bearbeitet-out Beispiel mit ************* zu handhaben):

{% for item in matchups %} 
    {% if 'SCORE' in item %} 
    {% set results = item.split()[-1] %} 
    {% set w = results.split('-')[0]|int %} 
    {% set l = results.split('-')[1]|int %} 
    {% if w > l %} 
     <font color='green'>{{ item }}</font> 
    {% elif w == l %} 
     {{ item }} 
    {% else %} 
     <font color='red'>{{ item }}</font> 
    {% endif %} 
    <br> 
    {% endif %} 
{% endfor %}