python 3.6 - 带有日期时间函数的 fstring 内部变量
python 3.6 - variable inside fstring with datetime function
我正在循环中尝试 运行 下面的代码行,并希望将 timedelta 定义为一个变量,因为它会不断变化。
START_TIME = f"{datetime.datetime.now() - timedelta(int('%d')):%d/%m/%Y 00:00}" % COUNT
END_TIME = f"{datetime.datetime.now() - timedelta(int('%d')):%d/%m/%Y 23:59}" % COUNT
然而,这是失败的,并出现以下错误:
ValueError: invalid literal for int() with base 10: '%d'
我正在尝试获取过去几天一天中的开始和结束时间,并对其执行一些操作。我也尝试了其他几种方法,但没有用。
发生这种情况是因为字符串格式化(求解 {}
中的表达式)在 printf 样式替换 (string % object
) 之前执行。
虽然它的可读性似乎有点差,但重新排列代码可能会更好 - 先计算 START_TIME
、END_TIME
,然后将所有内容转换为字符串。
如果您需要将它们分别放在一行中,您还可以使用方括号并显式调用 string.format()
方法以确保最后完成。以下非常通用的示例将起作用:
("{%d}" % 0).format('Hello')
输出:
Hello
但是,鉴于您的示例,这仍然不是很可读。
我正在循环中尝试 运行 下面的代码行,并希望将 timedelta 定义为一个变量,因为它会不断变化。
START_TIME = f"{datetime.datetime.now() - timedelta(int('%d')):%d/%m/%Y 00:00}" % COUNT
END_TIME = f"{datetime.datetime.now() - timedelta(int('%d')):%d/%m/%Y 23:59}" % COUNT
然而,这是失败的,并出现以下错误:
ValueError: invalid literal for int() with base 10: '%d'
我正在尝试获取过去几天一天中的开始和结束时间,并对其执行一些操作。我也尝试了其他几种方法,但没有用。
发生这种情况是因为字符串格式化(求解 {}
中的表达式)在 printf 样式替换 (string % object
) 之前执行。
虽然它的可读性似乎有点差,但重新排列代码可能会更好 - 先计算 START_TIME
、END_TIME
,然后将所有内容转换为字符串。
如果您需要将它们分别放在一行中,您还可以使用方括号并显式调用 string.format()
方法以确保最后完成。以下非常通用的示例将起作用:
("{%d}" % 0).format('Hello')
输出:
Hello
但是,鉴于您的示例,这仍然不是很可读。