【问题标题】:How to get 09 as an integer in python(odoo)?如何在python(odoo)中将09作为整数?
【发布时间】:2018-07-05 13:09:18
【问题描述】:

我一直在尝试使用此代码在我的代码中将 9 月设为 09,但后来我知道 09 在 python 中是不可接受的。但它可能仅显示为字符串。我的问题是如何将 09 显示为整数?

我的代码:

    september_month = dt.datetime(int(self.year.name),09,30)   
    print september_month

错误: 无效的令牌 09 和 ValueError: day is out of range for month

这个python程序运行在odoo版本10 python2.7

【问题讨论】:

  • 你不能。 09 作为整数与 9 作为整数相同。如果要显示前导 0,请将其格式化为字符串。此外,在旧版本的 Python(如 2.7)中,以 0 开头的数字被解释为八进制,可能会导致很多混乱。
  • 请注意,在 python 中,以 '0' 开头的整数被解释为八进制数,因此 09 是无效的,并且可能会引发带有无效标记的 SyntaxError(08 也会这样做)
  • 检查this questionthis PEP 也可能有用
  • datetime()的月份参数为什么要写前导零?只是想知道。

标签: python python-2.7 python-requests odoo odoo-10


【解决方案1】:

在 Python(任何版本)中,像 09 这样的文字被解释为八进制文字。因此9 的值无效。

如果您真的想查看09,您可以编写一个字符串并使用int("09") 转换为整数。在您的代码中:

september_month = dt.datetime(int(self.year.name),int("09"),int("30"))   
print september_month

不确定这是否有助于提高可读性,真的。

【讨论】:

    【解决方案2】:

    在 Python 3 中不可能将 int 值写为 01,02,09 等。

    【讨论】:

    • 我要python 2.7
    【解决方案3】:

    伙计,它有效,你的问题是没有 9 月 31 日

    【讨论】:

      【解决方案4】:

      如果要显示前导 0,请将数字格式化为字符串:

      "{:02d}".format(your_number)
      

      【讨论】:

        【解决方案5】:

        https://docs.python.org/3.6/library/datetime.html

        Datetime 知道 9 是什么,不用放 09

        【讨论】:

        • 可能不在2.7中
        猜你喜欢
        • 1970-01-01
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        相关资源
        最近更新 更多