Python f字符串格式不适用于strftime内联



我遇到了一个奇怪的错误,我正在努力理解。进行一些常规的代码清理,并将所有字符串格式转换为f字符串。这是在Python 3.6.6 上

此代码不起作用:

from datetime import date
print(f'Updated {date.today().strftime('%m/%d/%Y')}')
File "<stdin>", line 1
print(f'Updated {date.today().strftime('%m/%d/%Y')}')
^
SyntaxError: invalid syntax

然而,这(功能相同(确实有效:

from datetime import date
d = date.today().strftime('%m/%d/%Y')
print(f'Updated {d}')
Updated 11/12/2018

我觉得我可能错过了一些明显的东西,对第二次迭代很满意,但我想了解这里发生了什么。

有一种原生方式:

print(f'Updated {date.today():%m/%d/%Y}')

更多信息:

  • PEP 3101——高级字符串格式——按类型控制格式
  • datetime.date.__format__
print(f'Updated {date.today().strftime("%m/%d/%Y")}')

您的代码过早地结束了字符串定义。

如果字符串是另一个字符串的一部分,则需要在其中一个字符串中使用双引号

(f"updated {date.today().strftime('%D')}") # %m/%d/%y can also be written %D

奇怪的是,这还没有被提出:

print(date.today().strftime("Updated: %m/%d/%Y"))

相关内容

最新更新