要打印带有千位分隔符的数字,可以使用 python 格式字符串:
'{:,}'.format(1234567890)
但是如何指定我想要千位分隔符的空间?
要打印带有千位分隔符的数字,可以使用 python 格式字符串:
'{:,}'.format(1234567890)
但是如何指定我想要千位分隔符的空间?
如果您不想惹麻烦,这是一个糟糕但简单的解决方案locale
:
'{:,}'.format(1234567890.001).replace(',', ' ')
@user136036 的回答很好,但不幸的是它没有考虑到 Python 错误的现实。完整的答案可能如下:
如果您平台的区域设置正常,则只需使用区域设置:
import locale
locale.setlocale(locale.LC_ALL, '')
print("{:,d}".format(7123001))
结果取决于您的语言环境和 Python 实现是否正常工作。
但是如果根据语言环境的 Python 格式被破坏了,例如 Linux 上的 Python 3.5 怎么办?
如果 Python 不尊重grouping=True
参数,您可以使用语言环境和解决方法(使用货币格式):
locale.setlocale(locale.LC_ALL, '')
locale._override_localeconv = {'mon_thousands_sep': '.'}
print(locale.format('%.2f', 12345.678, grouping=True, monetary=True))
以上给出了我平台上的 12.345,68。将货币设置为 False 或省略它 - Python 不会对数千进行分组。指定locale._override_localeconv = {'thousands_sep': '.'}
什么都不做。
如果您没有时间检查平台上哪些工作正常以及 Python 有哪些问题,您可以使用常规字符串替换功能(如果您想将逗号和点交换为点和逗号):
print("{:,.2f}".format(7123001.345).replace(",", "X").replace(".", ",").replace("X", "."))
用逗号替换空格是微不足道的(假设点是小数分隔符):
print("{:,.2f}".format(7123001.345).replace(",", " ")
这会将语言环境设置为您的默认操作系统位置:
import locale
locale.setlocale(locale.LC_ALL, '')
然后你可以使用:
"{0:n}".format(1234567890)
您必须改用可'n'
识别区域设置的数字格式,并将您的区域设置设置为使用空格作为千位分隔符的区域设置。是的,这很痛苦。
'n'
- 数字。这与 相同'd'
,只是它使用当前语言环境设置插入适当的数字分隔符。
假设您编写代码:
print(f'{name} | Yearly salary: ${salary}.')
打印 -> 凯特 | 年薪:60000美元。
首先放一个 , 分隔符:
print(f'{name} | Yearly salary: ${salary:,}.')
打印 -> 凯特 | 年薪:60,000美元。
然后用空格替换逗号:
print(f'{name} | Yearly salary: {salary:,} USD.'.replace(',', ' '))
打印 -> 凯特 | 年薪:60 000 美元。
注意:请记住美元、美元或英镑、克朗等符号应符合相应的通用标准
Python 社区在PEP 378下对其进行了定义,您可以在其中看到主要提案包括format()
功能。因此,通过遵循该建议,我建议使用以下内容:
format(1234567890, ',d').replace(',',' ')
如果您不想使用本地,则可以使用适用于各种字符串大小的解决方案:
def format_number(string):
j = len(string) % 3
substrings = [string[3 * i + j:3 * (i + 1) + j] for i in range(len(string)//3)]
if j != 0:
substrings.insert(0, string[:j])
return " ".join(substrings)