如何在 f 字符串中使用逗号作为小数点分隔符来格式化浮点数?

sea*_*ver 7 python format floating-point f-string

对于 python 中的某些机器控制,我将结果写入一个文本文件,其他人可以将其复制到 Excel 中(这是在这种情况下最方便的方法)。但是,在荷兰,Excel 有一个逗号作为小数点分隔符,因此我希望文本文件中的结果“位置”为 123,456,但是当我使用这样的 f-string 方法时:

    resultfile.write(f"Position\t{position:.5}")
Run Code Online (Sandbox Code Playgroud)

这显然会导致点小数分隔符。

如何在不遍历整个文件的情况下将其更改为逗号并用逗号替换点?

kad*_*dee 9

如果你想要的格式彩车用逗号的F-字符串,您可以使用铸造浮到一个字符串替换后:

position = 123.456
f"Position\t{str(position).replace('.',',')}"
Run Code Online (Sandbox Code Playgroud)

第二种选择是使用 Python 标准库模块语言环境(但它不是线程安全的):

import locale
locale.setlocale(locale.LC_ALL, 'nl_NL')
f"Position\t{locale.format('%.3f', position)}"
Run Code Online (Sandbox Code Playgroud)

第三种选择是使用库babel(在库例程的情况下首选):

from babel.numbers import format_decimal
f"Position\t{format_decimal(position, locale='nl_NL')}"
Run Code Online (Sandbox Code Playgroud)

对于给定示例,所有三个选项都返回相同的结果:

'Position\t123,456'
Run Code Online (Sandbox Code Playgroud)