Ich möchte meine Zeichenkette, die sowohl Dezimal als auch Fließkomma enthält, mit Tausendertrennzeichen formatieren. Ich habe versucht:Angepasstes Tausendertrennzeichen für Zeichenkettentypvariable
aber es funktioniert nicht mit einem Argument der Zeichenfolge Typ!
>>> num_str = "123456.230"
>>> "{:,}".format(num_str)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Cannot specify ',' with 's'.
>>>
gegoogelt für Lösung (en), konnte aber keine Lösung nicht gefunden (en), die meine Bedürfnisse zu befriedigen.
Mein Abtastwerteingang: "123456.0230"
Ausgabe Meine gewünschte Probe zu sein: "123,456.0230"
schrieb ich meinen eigenen Code, der wie folgt lautet:
input_str = ''
output_str = ''
lenth = 0
input_str = input("Input a number: ")
for i in input_str:
if input_str[lenth] == '.':
break
lenth += 1
if lenth % 3 == 0:
pos_separator = 3
else:
pos_separator = lenth % 3
for i in range(0, lenth):
if i == pos_separator:
output_str += ',' + input_str[i]
pos_separator += 3
else:
output_str += input_str[i]
output_str += input_str[lenth:]
print("Output String: ", output_str)
Sampe 1:
>>> Input a number: 123456.0230
>>> Output String: 123,456.0230
Probe 2:
>>> Input a number: 12345.
>>> Output String: 12,345.
Arbeiten in Ordnung, aber gibt es einen besseren Weg?
Sie auch 'decimal.Decimal' statt' float' nennen könnte, Runden zu vermeiden und genau nachgestellten Nullen bewahren. – user2357112
@ Jim und & user2357112: Danke Jungs! funktioniert super bis auf den Fall: >>> num_str = "123456". >>> {:,} ". format (Dezimal (num_str)) >>> '123,456' (das ohne Punkt zurückkommt, wie es sein sollte). Aber ich arbeite gerade an einem Rechnerprojekt mit GUI/PyQt5, das Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Ich denke, es gibt keinen anderen Weg als die benutzerdefinierte Methode, um diese Anforderung zu erfüllen. Wenn es einen anderen Weg gibt, lass es mich wissen. – smearumi
@smearumi Sie können eine angepasste Version für die noch kürzere erstellen, werfen Sie einen Blick auf meine aktualisierte Antwort und sehen, ob es den Trick macht. –