Python在字典中存储带前导零的数字
我有一本字典叫table。我想把这个号码分配给下面的dic钥匙。它总是给我一个错误,说“无效令牌”。我尝试过转换字符串、int和float,但没有效果Python在字典中存储带前导零的数字,python,dictionary,leading-zero,Python,Dictionary,Leading Zero,我有一本字典叫table。我想把这个号码分配给下面的dic钥匙。它总是给我一个错误,说“无效令牌”。我尝试过转换字符串、int和float,但没有效果 table['Fac_ID']=00000038058您正在不明智地调用Python 2.x八进制模式,但是: 你不能,因为里面有一个8(坏运气还是好运气?) 在Python3(也适用于Python2.7)中,八进制前缀不再是0,而是0o:因此出现无效标记 最好不使用前导零来存储值,并在打印时添加前导零 print("%012d"%table
table['Fac_ID']=00000038058
您正在不明智地调用Python 2.x八进制模式,但是:
- 你不能,因为里面有一个8(坏运气还是好运气?)
- 在Python3(也适用于Python2.7)中,八进制前缀不再是
,而是0
:因此出现无效标记0o
print("%012d"%table['Fac_ID'])
不要将其转换为字符串,首先将其用作字符串:
>>> table['Fac_ID'] = str(00000038058)
File "<stdin>", line 1
table['Fac_ID'] = str(00000038058)
^
SyntaxError: invalid token
>>> table['Fac_ID'] = '00000038058'
>>> print table['Fac_ID']
00000038058
>表['Fac_ID']=str(00000038058)
文件“”,第1行
表['Fac_ID']=str(00000038058)
^
SyntaxError:无效令牌
>>>表['Fac_ID']=“000000 38058”
>>>打印表格['Fac_ID']
00000038058
str和任何函数一样,在传入参数之前将参数求值为一个值,因此,如果str之前存在无效标记,则使用str不会改变这一点。您需要使用有效的令牌,因此只需对字符串进行硬编码。将数字括在引号中 表['Fac_ID']=“000000 38058”可用于填充零。假设要填充最多11个零:
>>> str(38058).zfill(11)
'00000038058'
这显然会创建一个零填充字符串,用作基于整数的键。您可以发布完整的代码段吗?那么转换为字符串有什么问题?因为您启用的八进制模式中包含8。使用字符串而不是像许多其他语言一样,在python中,前导零表示八进制、基数8、0-7。在将参数传递给函数之前,您有一个8.5的python函数会对参数进行求值,但是是的。我不会将数字存储为字符串,因为首先它需要更多内存,其次如果有人输入了错误的填充,会怎么样?2个相同的整数值,但2个不同的字符串值。如果是用户输入或类似的内容,询问者首先不会得到无效的令牌错误-他显然是在尝试硬编码这些值。