奇怪的是,“#”是格式为“%#H:%M”的错误指令
Weirdly enough, '#' is a bad directive in format '%#H:%M'
我已经看到很多类似的问题,但我似乎仍然无法找出我的代码有什么问题。
我是 运行 这个:
from datetime import datetime
date_st = "17:00"
date = datetime.strptime(date_st, "%#H:%M")
我得到错误:
ValueError: '#' is a bad directive in format '%#H:%M'
我是 运行 Windows,这就是我使用 %#H 而不是 %-H 的原因。虽然我尝试了 %-H 但效果不佳。
%#H
只是格式化字符串(strftime
)的有效格式化代码,而不是用strptime
.
解析它
我觉得strptime
是Python自己提供的,因为windows没有这个功能,所以理论上支持#H
/-H
可以添加。但是由于 %H
已经可以在 one-digit 小时内解析单个可选的前导 0,因此没有太多需要它(并且 POSIX strptime
不允许 %-H
).
您必须执行其他操作才能解析它。在这种情况下,类似于:
date_no_leading_zeros = date_st.lstrip("0")
# To support strings like "00:17" for 17 minutes past midnight
if date_no_leading_zeros.startswith(":"):
date_no_leading_zeros = "0" + date_no_leading_zeros
date = datetime.strptime(date_no_leading_zeros, "%H:%M")
会起作用。但在其他情况下,您可能希望使用正则表达式来解析日期。
我已经看到很多类似的问题,但我似乎仍然无法找出我的代码有什么问题。 我是 运行 这个:
from datetime import datetime
date_st = "17:00"
date = datetime.strptime(date_st, "%#H:%M")
我得到错误:
ValueError: '#' is a bad directive in format '%#H:%M'
我是 运行 Windows,这就是我使用 %#H 而不是 %-H 的原因。虽然我尝试了 %-H 但效果不佳。
%#H
只是格式化字符串(strftime
)的有效格式化代码,而不是用strptime
.
我觉得strptime
是Python自己提供的,因为windows没有这个功能,所以理论上支持#H
/-H
可以添加。但是由于 %H
已经可以在 one-digit 小时内解析单个可选的前导 0,因此没有太多需要它(并且 POSIX strptime
不允许 %-H
).
您必须执行其他操作才能解析它。在这种情况下,类似于:
date_no_leading_zeros = date_st.lstrip("0")
# To support strings like "00:17" for 17 minutes past midnight
if date_no_leading_zeros.startswith(":"):
date_no_leading_zeros = "0" + date_no_leading_zeros
date = datetime.strptime(date_no_leading_zeros, "%H:%M")
会起作用。但在其他情况下,您可能希望使用正则表达式来解析日期。