如何在python中打印数字,并使用空格字符作为千位分隔符?

如何在python中打印数字,并使用空格字符作为千位分隔符?,python,python-3.x,formatting,output,Python,Python 3.x,Formatting,Output,例如,我知道“{:,}”格式(123456789)将以python输出“123456789” 但是,我希望使用细空格字符作为千分位符,而不是逗号。根据,细空格字符的python源编码为u“\u2009” 因此,我尝试用u“\u2009”替换“{:,}”中的逗号,但这会导致语法错误。这可能是因为python无法处理由此产生的嵌套双引号,需要对某些内容进行转义 那么,有没有办法让这一机制或其他机制发挥作用?顺便说一下,我想抑制输出中出现的单引号 我可以为您提供一个明显的解决方法: >>&

例如,我知道“{:,}”格式(123456789)将以python输出“123456789”

但是,我希望使用细空格字符作为千分位符,而不是逗号。根据,细空格字符的python源编码为u“\u2009”

因此,我尝试用u“\u2009”替换“{:,}”中的逗号,但这会导致语法错误。这可能是因为python无法处理由此产生的嵌套双引号,需要对某些内容进行转义


那么,有没有办法让这一机制或其他机制发挥作用?顺便说一下,我想抑制输出中出现的单引号

我可以为您提供一个明显的解决方法:

>>> n = 123456789
>>> print(f'{n:,}'.replace(',', u'\u2009'))
123 456 789

同样适用于str.format。

我可以为您提供一个明显的解决方法:

>>> n = 123456789
>>> print(f'{n:,}'.replace(',', u'\u2009'))
123 456 789

同样适用于
str.format

您可以使用
str
中的
replace
方法在格式化后用细空格替换
,即:
“{:,}”。format(123456789)。replace(“,”,u“\u2009”)

根据官方文件,只有
\uu
可用作分离器。要使用用户定义的语言,您需要使用
n
表示,并更改
locale
设置(请参阅)。您可以创建一个新的本地化,并根据需要使用此假本地化,但这是一个相当复杂的解决方案


编辑:我说的假本地化实际上是指计算机中的新区域设置,而不是Python。您可以阅读更多详细信息(我认为这可以在大多数发行版上进行调整)

您可以使用
str
中的
replace
方法在格式化后用细空格替换
,即:
“{:,}”。格式化(123456789)。replace(“,”,u“\u2009”)

根据官方文件,只有
\uu
可用作分离器。要使用用户定义的语言,您需要使用
n
表示,并更改
locale
设置(请参阅)。您可以创建一个新的本地化,并根据需要使用此假本地化,但这是一个相当复杂的解决方案


编辑:我说的假本地化实际上是指计算机中的新区域设置,而不是Python。您可以阅读更多详细信息(我认为这在大多数发行版上都适用)

这将有助于显示一个示例和确切的错误<代码>“{:\u2009}”。format(123456789)给出了一个不同的错误:
ValueError:Unknown format code'\x2009'用于“int”类型的对象
,但至少它不是语法错误!根据,您只能使用
\uuu
作为分组选项。所以,你应该使用下面答案中提到的字符串替换。如果你的问题得到了回答,请。您可以通过单击答案左侧的灰色复选框将其切换为绿色来接受答案。谢谢。这将有助于显示一个例子和确切的错误<代码>“{:\u2009}”。format(123456789)给出了一个不同的错误:
ValueError:Unknown format code'\x2009'用于“int”类型的对象
,但至少它不是语法错误!根据,您只能使用
\uuu
作为分组选项。所以,你应该使用下面答案中提到的字符串替换。如果你的问题得到了回答,请。您可以通过单击答案左侧的灰色复选框将其切换为绿色来接受答案。谢谢。很久以前,我在python和ipython中尝试了您的解决方案,但在这两种情况下,千分隔符都是空间,而不是薄空间。我对如何获得一个精简空间感到困惑,因为至少在我的Mac电脑的python上,精简空间被渲染为一个空间。很久以前,我在python和ipython中尝试过您的解决方案,但在这两种情况下,数千分隔符都是空间而不是精简空间。我对如何获得精简空间感到困惑,因为至少在Mac的python上,精简空间被渲染为一个空间。