Python-将字符串转换为整数,同时保持前导零

时间:2015-04-23 01:29:40

标签: python string integer

我正在尝试将字符串(例如'AB0001')转换为显示为'001'的整数

我在尝试:

x='AB0001'
z=int(x[2:len(x)])

虽然我的输出是:

1

我需要将它作为一个整数用于:

format_string=r'/home/me/Desktop/File/AB'+r'%05s'+r'.txt' % z

感谢您的时间,请告诉我如何获得以下结果:

format_string=r'/home/me/Desktop/File/AB0001.txt'

3 个答案:

答案 0 :(得分:4)

你在python3和python 2中根本没有前导零,它们表示octal个数字。如果您要将其传递给字符串,请将其保留为字符串。

如果你想填0,你可以填写:

print(x[2:].zfill(5))

当你似乎想要与原始字符串完全相同的输出时,我不明白你为何会切片。

 format_string=r'/home/me/Desktop/File/{}.txt'.format(x)

会给你你想要的东西。

答案 1 :(得分:0)

如果我理解正确,您将在字符串中使用int,对吗?既然如此,你应该完全按照自己的意思去做:

>>> x = 1
>>> format_string = r'/home/me/Desktop/File/AB%04d.txt' % x
>>> print(format_string)
/home/me/Desktop/File/AB0001.txt
>>>

您不需要将变量存储为格式为int的{​​{1}}(无论如何都不能这样做)。您在创建001时将其转换为该格式。

答案 2 :(得分:0)

通过;WITH Cte AS( SELECT *, RN = ROW_NUMBER() OVER(ORDER BY MyOrdinal) - MyMarker + 1 FROM @Holder ), CteApply AS( SELECT t.MyOrdinal, t.MyMarker, MyGroupNumber = CASE WHEN RN IS NULL THEN x.NewRN ELSE RN END FROM Cte t OUTER APPLY( SELECT TOP 1 RN * 1.1 AS NewRN FROM Cte WHERE t.MyOrdinal > MyOrdinal AND MyMarker IS NOT NULL ORDER BY MyOrdinal DESC )x ) SELECT MyOrdinal, MyMarker, MyGroupNumber = DENSE_RANK() OVER(ORDER BY MyGroupNumber) FROM CteApply 方法使用string-formatting是有益的。

.format()

结果:

x='AB0001'
resulting_int_value =int(x[2:])  # omitting the last index of a slice operation will automatically assign the end of the string as the index

resulting_string = r'/home/me/Desktop/File/AB{:04}.txt'.format(resulting_int_value)

这里,'/home/me/Desktop/File/AB0001.txt' 是一个格式说明符,通过填充最多4个前导零来告诉字符串格式化给定值。

因此,使用{:04}会产生字符串"{:04}".format(0)