2
我想要使用千位分隔符來格式化包含小數點和浮點數的字符串。我試過了:爲字符串類型變量定製千分隔符
但它不能使用字符串類型的參數!
>>> num_str = "123456.230"
>>> "{:,}".format(num_str)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Cannot specify ',' with 's'.
>>>
谷歌搜索解決方案,但找不到任何滿足我的需求的解決方案。
我的樣本輸入:"123456.0230"
我的期望的採樣輸出是:"123,456.0230"
我寫我自己的代碼,如下所示:
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
樣品2:
>>> Input a number: 12345.
>>> Output String: 12,345.
工作還行,但有沒有其他方式比這更好?
你也可以叫'decimal.Decimal',而不是'float',以避免四捨五入,準確地保留尾隨零。 – user2357112
@ Jim和&user2357112:謝謝各位!除案件外很好:>>> num_str =「123456.」 >>> {:,}「。格式(十進制(num_str))>>>'123,456'(它應該是沒有點返回) 但我目前正在使用GUI/PyQt5計算器項目需要提到的情況下通過keyPressEvent()顯示用戶輸入,我想除了定製的方式來滿足這個需求沒有別的辦法,如果還有其他方法,請讓我知道。 – smearumi
@smearumi你可以創建一個更短的定製版本,看看我更新的答案,看看它是否有訣竅。 –