Python:用括号格式化负数

8on*_*ne6 7 python

有没有办法使用字符串插值或string.format将负数呈现为使用括号而不是"负号"格式化的文本?

-3.14应该是(3.14).

我曾希望使用字符串插值来实现这一点,或者string.format不需要专门为货币或会计设计的导入.

编辑以澄清:请假设要格式化的变量是a int或a float.即,虽然这可以通过正则表达式完成(请参阅下面的好答案),但我认为这将是Python格式化功能的更原生的操作.

所以要明确:

import numpy as np
list_of_inputs = [-10, -10.5, -10 * np.sqrt(2), 10, 10.5, 10 * np.sqrt(2)]
for i in list_of_inputs:
    # your awesome solution goes here
Run Code Online (Sandbox Code Playgroud)

应该返回:

(10)
(10.5)
(14.14)
10
10.5
14.14
Run Code Online (Sandbox Code Playgroud)

显然,最后一个有一些灵活性.我曾希望"在括号中加上负数"将是字符串插值的自然参数,或者string.format在设置负数的显示样式时我可以使用其他格式化语言.

tza*_*man 7

如果您只需要处理可能为负的数字输入:

print '{0:.2f}'.format(num) if num>=0 else '({0:.2f})'.format(abs(num))
Run Code Online (Sandbox Code Playgroud)


Leo*_*rdo 0

也许你正在寻找这样的东西

float = -3.14
num=  "(%(key)s)" %{ 'key': str(abs(float))} if float < 0 else str(float)
Run Code Online (Sandbox Code Playgroud)