在Python中将字符串格式化为特定字符限制

时间:2016-05-10 19:07:48

标签: python string numpy

我有一个代码,在对它们进行一些数学运算之后输出一大堆数字。在代码中的某一点,它们用numpy.rint四舍五入,在某些情况下(我相信当9被舍入到10时)我最终会得到一个我不想要的尾随零。我有一些看起来像这样的代码

ra3n = ra3/60 * 10
ra3n = np.rint(ra3n)
ra3n = ra3n.astype(str) ##there is a good reason that this needs to be a string

我需要所有生成的ra3n长度为5个字符,但偶尔会弹出一个长6个字符。我该如何正确格式化?请记住,我是一个完整的python noob,所以我可能需要它为我拼写=)

编辑:

这是我的输出:

00244-2451
00244-2702
00278-0629
00286-1614
00295-1101
002910-0546
00303+0711
00305+2246
00348+2604
003410+0423
00355-0204
00359+1236
00360-0931
00386-1210

字符串前半部分有六位而不是五位的实例是错误的;那些尾随的零不应该在那里。

2 个答案:

答案 0 :(得分:2)

ra3n = ra3n[:-1] if ra3n[-1] == '0' else ra3n

可能有一个更好的解决方案,但我不确定如果没有看到一些输出我真的理解你的问题。

答案 1 :(得分:2)

您更改ra3n的类型,这是糟糕的编程习惯。试试这个。

ra3n = format(ra3/60.*10., '5f')[:5]

这恰好提供了五个字符。请注意,如果字符串通常长度为六个字符,则会切断最后一个字符,无论是好还是坏。另请注意,我在60和10个数字中包含小数点:这保证将使用浮点除法,而不是在Python 2中完成整数除法。