小数点と浮動小数点の両方を含む文字列を1000個のセパレータを使用してフォーマットしたいとします。私は試しました:文字列型変数の1000セパレータをカスタマイズしました
しかし、それは文字列型の引数で動作していません!
>>> num_str = "123456.230"
>>> "{:,}".format(num_str)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Cannot specify ',' with 's'.
>>>
ググ溶液(S)のための私のニーズを満たす任意の解決策(複数可)を見つけることができませんでした。
私のサンプル入力:"123456.0230"
マイ所望のサンプル出力はすべき:SAMPE 1
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)
:"123,456.0230"
私は次のようである私自身のコードを書いた
>>> Input a number: 123456.0230
>>> Output String: 123,456.0230
サンプル2:
>>> Input a number: 12345.
>>> Output String: 12,345.
問題はありませんが、他の方法はこれよりも優れていますか?
あなたはまた、丸め避け、正確に末尾のゼロを維持するために、代わりに '' float'のdecimal.Decimal'を呼び出すことができます。 – user2357112
@ Jimと&user2357112:ありがとう!大文字と小文字は区別されます:>>> num_str = "123456" >>> {:、} "。format(Decimal(num_str))>>> '123,456'(ドットのない状態で戻る) 私は現在、GUI/PyQt5を使った電卓プロジェクトに取り組んでいます。 keyPressEvent()によってユーザー入力を表示するための上記のケースが必要です。他の方法はありませんが、このニーズを満たすためのカスタマイズされた方法はないと思います。 – smearumi
@smearumiさらに短くなったカスタマイズされたバージョンを作成して、私の更新された答えを見て、そのトリックがあるかどうかを確認することができます。 –