Python f-string格式化与strftime内联不起作用

21

我遇到了一个奇怪的错误,正在尝试理解它。进行一些通用代码清理并将所有字符串格式化转换为f-strings。这是在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

我觉得可能还有一些很显然的东西我没有想到,虽然我对第二次尝试感到满意,但我想理解这里发生了什么。


6
请注意您问题中的颜色:您必须使用不同的引号。执行 print(f'Updated {date.today().strftime("%m/%d/%Y")}') - Jean-François Fabre
4个回答

67

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

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


哇,是的,非常明显。感谢指出这个愚蠢的错误! - Sam Morgan
14
输出今天的日期:print(f'更新于{date.today():"%m/%d/%Y"}') - Kubas

3

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

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

转义(内部)单引号也可以起作用,但在这里没有理由首选。 f'updated {date.today().strftime(\'%D\')}' - Adam Smith
啊,%D 这个技巧不错。你在哪里找到的?我在文档中找不到这个参考。 - Sam Morgan
3
我在这里找到了它:' https://www.tutorialspoint.com/python/time_strftime.htm ',其中一些内容可能不在文档中。 - ratan kamath

2

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

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

1
使用f字符串结合strftime的更有趣的方式: var = '已更新' print(date.today().strftime(f'{var}: %m/%d/%Y')) - Paal Pedersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接