2014-09-11 72 views
0

如何00024为 '00024' 转换与Python?如何将八进制转换为字符串而不更改该值?

如果我在Python shell中运行00024,其打印20结果。我想将00024转换为字符串,结果是'00024'。有什么建议么?

+0

没有,'00024'是*不*打印24.打印20,因为它是一个八进制数。 – 2014-09-11 07:15:16

+0

对不起,我打错了。 – kangfend 2014-09-11 07:18:20

回答

3

如果你想表示整数带前导零,format()明确数量的字符串:

format(integer, '05d') 

每当你的输出值,print隐含其转换为与str()的字符串,format()你控制转换如何明确发生。

当您在交互式解释器中回显数字时,将使用repr()代替,但对于整数,输出与使用str()时完全相同。

演示:

>>> format(24, '05d') 
'00024' 

当你进入00024为文字整数,Python 2的分析,作为一个八进制数,在Python 3,这是一个语法错误。

如果你想诠释在Python 2外壳这样一个数字,如果它是一个字符串,你不能做你想要什么,而不是前导零的任意数量。充其量,您最多可以将生成的整数重新格式化为八进制数,再次使用前导零。这会再次产生一个字符串,但你必须硬编码前导零的数量:

>>> number = 00024 
>>> format(number, '05o') 
'00024' 

注意,这还将只要你有一个数字,前导零失败;你可以自动检测这些值,如果它们比4095(07777八进制)更大:

strnumber = format(number, '5d' if number > 0o07777 else '05o') 

任何数量与领先的零和阿拉伯数字8或9只是失败有语法错误:

>>> 09876 
    File "<stdin>", line 1 
    09876 
     ^
SyntaxError: invalid token 

你更好的选择是刚刚进入这样的数字为字符串代替。

+0

我有这个数字00024的数据,我想转换为字符串。但不能改变价值。 – kangfend 2014-09-11 07:20:03

+0

啊好的,感谢您的回答@马亭,PIETERS :) – kangfend 2014-09-11 07:27:12

相关问题