Wie formatiere ich 1000000
a 1.000.000
in Python?, wobei das '.' das Tausendertrennzeichen für das Dezimalzeichen ist.
Antworten
Zu viele Anzeigen?Seltsam, dass niemand eine unkomplizierte Lösung mit regex erwähnt hat:
import re
print(re.sub(r'(?<!^)(?=(\d{3})+$)', r'.', "12345673456456456"))
Ergibt die folgende Ausgabe:
12.345.673.456.456.456
Es funktioniert auch, wenn Sie die Ziffern nur vor dem Komma trennen wollen:
re.sub(r'(?<!^)(?=(\d{3})+,)', r'.', "123456734,56456456")
gibt:
123.456.734,56456456
Der Regex verwendet Lookahead, um zu prüfen, ob die Anzahl der Ziffern nach einer bestimmten Position durch 3 teilbar ist.
Aktualisierung 2021: Bitte verwenden Sie dies nur für Skripte (d.h. nur in Situationen, in denen Sie den Code nach der Verwendung zerstören können). Bei Verwendung in einer Anwendung würde dieser Ansatz eine ReDoS .
Hier ist nur eine alternative Antwort. Sie können den Split-Operator in Python verwenden und durch einige seltsame Logik Hier ist der Code
i=1234567890
s=str(i)
str1=""
s1=[elm for elm in s]
if len(s1)%3==0:
for i in range(0,len(s1)-3,3):
str1+=s1[i]+s1[i+1]+s1[i+2]+"."
str1+=s1[i]+s1[i+1]+s1[i+2]
else:
rem=len(s1)%3
for i in range(rem):
str1+=s1[i]
for i in range(rem,len(s1)-1,3):
str1+="."+s1[i]+s1[i+1]+s1[i+2]
print str1
Ausgabe
1.234.567.890
- See previous answers
- Weitere Antworten anzeigen
3 Stimmen
Bitte klären Sie Ihre Frage. Zeigen Sie etwas Code, nennen Sie den Datentyp des Objekts, das Sie ausdrucken möchten, geben Sie ein Beispiel für die Ausgabe.
0 Stimmen
Sie können nicht mehr als einen Dezimalpunkt in einer Zahl haben. Was ist
1.000.000
bedeuten soll? Meinen Sie Kommas?33 Stimmen
@Noufal: in einigen Gegenden,
.
verwendet wird, statt,
um Tausende zu trennen.0 Stimmen
Wirklich? Das war mir nicht bewusst. Ich glaube aber nicht, dass man sie in diesen Ländern "Dezimalpunkte" nennen würde.
3 Stimmen
@NoufalIbrahim, Das nennt man Dezimalzeichen und Wikipedia-Seite erklärt, welche Länder unterschiedliche Dezimalzeichen verwenden.
0 Stimmen
Wer sich für dieses Thema interessiert, sollte sich Sehen Sie sich meine Antwort an (zu einer ähnlichen Frage), in der die Grenzen der Verwendung der
format()
Lösung und hat einen Code geschrieben, der diese Aufgabe erfüllt.