如何将00024转换为' 00024'用python?
如果我在python shell中运行00024,它会打印20作为结果。我想将00024转换为字符串,结果是' 00024'。有什么建议吗?
答案 0 :(得分:3)
如果你想用前导零表示整数,format()
明确表示字符串的数字:
format(integer, '05d')
每当您输出值时,print
会隐式将其转换为包含str()
的字符串,而format()
则可以控制显式转换的发生方式。
当您在交互式解释器中回显数字时,会使用repr()
,但对于整数,输出与使用str()
时的输出完全相同。
演示:
>>> format(24, '05d')
'00024'
当您输入00024
作为整数文字时,Python 2将其解析为八进制数,在Python 3中这是一个语法错误。
如果你想在Python 2 shell 中解释这样的数字就好像它是一个字符串,你就不能做你想要的,而不是任意数量的前导零。您最多可以将结果整数重新格式化为八进制,再次使用前导零。这将再次产生一个字符串,但你必须硬编码前导零的数量:
>>> 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
更好的选择是输入作为字符串。