【发布时间】:2019-12-03 09:24:24
【问题描述】:
更新: 到目前为止(2019-09),在格式化为字符串的十进制数字中屏蔽前导或尾随零似乎不受支持 Python。您将需要使用解决方法来获得类似“.01”的内容 从数字 0.0101(假设需要 3 个小数位)。
我什至认为支持这种格式是件好事不是 因为
- 我认为 '0.01' 在可读性方面比 '.01' 更好
- '0.010' 携带在 '0.01' 中丢失的信息(3 位精度...)
如果需要,可以使用以下建议之一。感谢大家的贡献。
问:我正在寻找一种将浮点数输出为字符串的方法,格式为没有前导/尾随零。有没有办法用'{ }'.format() 或 f-string 做到这一点?我搜索了互联网,但没有找到任何东西。我只是错过了它还是不可能(Python 3.7)?
我的想法基本上是
some_number = 0.3140
string = f'{some_number:x}' # giving '.314'
给出输出string '.314'.。那么有没有 x 可以做到这一点?
当然,可以使用lstrip / rstrip 解决方法,例如描述here 或 similar here:
In [93]: str(0.3140).lstrip('0').rstrip('0')
Out[93]: '.314'
但是使用 only 一个 f-string 会更方便。由于我可以将其用于其他格式选项,因此可选地调用 strip 需要额外的代码行。
【问题讨论】:
-
@gpk,我不是在寻找
strip方法。我进行了编辑以澄清。 -
哦,好吧@MrFuppes,也许这可以帮助-stackoverflow.com/questions/10303797/…
-
@gpk27,谢谢,但我查看了Q&A you suggested 中给出的答案。似乎是另一个黑客;定义新类不是我的想法。
-
我不知道这是否符合您的要求,但您可以使用
string = f'{(str(some_number).lstrip("0").rstrip("0"))}'将 f 字符串与strip()方法结合起来。
标签: python string format f-string