Ich habe einen DB-Block voll mit Telefonnummern als Strings, sie sind alle wie 1112223333 formatiert, ich möchte sie als 111-222-3333 in meiner Django-Vorlage anzeigen
Ich weiß, dass ich es tun kann
%Vor%Aber gibt es einen besseren / mehr pythonischen Weg?
Es kann für Ihren Anwendungsfall ein Overkill sein, wenn alle Ihre Zahlen auf die gleiche Weise formatiert sind, aber Sie könnten die Phonenzahlen Modul. Dadurch können Sie sehr einfach Funktionen (z. B. internationale Telefonnummern, verschiedene Formatierungen usw.) hinzufügen.
Sie können Ihre Zahlen wie folgt analysieren:
%Vor%Um es dann wie gewünscht zu formatieren, können Sie Folgendes tun:
%Vor%Beachten Sie, dass Sie problemlos andere Formate verwenden können:
%Vor%Das ist ziemlich verspätet, aber ich dachte, ich würde meine Lösung trotzdem veröffentlichen. Es ist sehr einfach und nutzt die Möglichkeit, eigene Template-Tags zu erstellen (für die Verwendung im gesamten Projekt). Der andere Teil davon verwendet die Klammern um die Ortsvorwahl.
%Vor% Für den Rest Ihres Projekts müssen Sie nur {{ var|phonenumber }}
Da wir Pythonic sprechen :), ist es eine gute Angewohnheit Verwenden Sie immer join
anstelle von addition ( +
), um Zeichenfolgen zu verknüpfen :
print formatPhone ('+ 7-111-222-33-44')
7 (111) 222-33-44
print formatPhone ('222-33-44')
222-33-44
print formatPhone ('23344')
2-33-44