Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在字典中存储带前导零的数字_Python_Dictionary_Leading Zero - Fatal编程技术网

Python在字典中存储带前导零的数字

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。我想把这个号码分配给下面的dic钥匙。它总是给我一个错误,说“无效令牌”。我尝试过转换字符串、int和float,但没有效果


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个不同的字符串值。如果是用户输入或类似的内容,询问者首先不会得到无效的令牌错误-他显然是在尝试硬编码这些值。