如何在Python中的int之前添加加号?

时间:2014-01-15 08:28:20

标签: python arrays numpy

我需要以非常特定的格式生成输出,并且正整数必须在它们前面加上一个加号。我正在使用numpy数组,并尝试了类似的东西:

    if(int(P[pnt])>0):
        P[pnt] += np.insert(P[pnt-1],0,"+")

但它永远不会将加号作为数字的一部分添加,而是作为一个不同的实例添加..

我也尝试将其保存在另一个文件中然后从那里修改(使用re.sub()等...)但没有运气:(

我的输出如下:

(+1 2 -4 +5 -3)
(+1 2 3 -5 4)
(+1 2 3 -4 5)
(+1 2 3 4 5)

应该是这样的:

(+1 +2 -4 +5 -3)
(+1 +2 +3 -5 +4)
(+1 +2 +3 -4 +5)
(+1 +2 +3 +4 +5)

如有必要,我可以分享整个代码......

谢谢! :)

3 个答案:

答案 0 :(得分:7)

使用.format()Python Format mini-language。您需要+ 签名选项。

'{:+}'.format(3)  # "+3"
'{:+}'.format(-3) # "-3"

可以坚持下去:

a = numpy.array([1, 2, -4, 5, -3])
print '(' + ' '.join('{:+}'.format(n) for n in a)) + ')'
# (+1 +2 -4 +5 -3)

答案 1 :(得分:2)

补充Nick T的回答:
您可以编辑numpy的打印选项,因此每当您打印numpy数组时,都会进行格式化。

In [191]: np.set_printoptions(formatter={'all':lambda x: '{:+}'.format(x)})

In [198]: np.random.random_integers(-5,5,(5,5))
Out[198]:
array([[+2, +2, +2, -4, +0],
       [-2, -1, +3, +5, -1],
       [-5, -2, -1, -3, +4],
       [+1, +3, -5, +3, -4],
       [+2, -1, +2, +5, +5]])

'all'定义了应该使用此格式的类型。 set_printoptions的docstring将告诉您可以在那里设置更具体的格式。

     - 'bool'
     - 'int'
     - 'timedelta' : a `numpy.timedelta64`
     - 'datetime' : a `numpy.datetime64`
     - 'float'
     - 'longfloat' : 128-bit floats
     - 'complexfloat'
     - 'longcomplexfloat' : composed of two 128-bit floats
     - 'numpy_str' : types `numpy.string_` and `numpy.unicode_`
     - 'str' : all other strings

 Other keys that can be used to set a group of types at once are::

     - 'all' : sets all types
     - 'int_kind' : sets 'int'
     - 'float_kind' : sets 'float' and 'longfloat'
     - 'complex_kind' : sets 'complexfloat' and 'longcomplexfloat'
     - 'str_kind' : sets 'str' and 'numpystr'

答案 2 :(得分:0)

我不在我可以测试它的环境中,但是numpy.insert应该沿着轴插入对象,在你选择的那个之前追加一个新的索引/值。

在条件语句中,真实结果可以将P [pnt]设置为等于'+'+ str(P [pnt])。你到底在寻找一系列字符串,是吗?