语法无效-表达式返回f-String中的字符串

时间:2018-12-04 09:31:06

标签: python string python-3.x f-string

我喜欢python 3.6中的新f-String,但是在尝试在表达式中返回String时遇到了几个问题。 下面的代码不起作用,并告诉我我使用的语法无效,即使表达式本身是正确的。

print(f'{v1} is {'greater' if v1 > v2 else 'less'} than {v2}') # Boo error

它告诉我'greater''less'是意外令牌。如果我用两个包含字符串甚至两个整数的变量替换它们,错误就会消失。

print(f'{v1} is {10 if v1 > v2 else 5} than {v2}') # Yay no error

我在这里想念什么?

3 个答案:

答案 0 :(得分:3)

只需混合引号,然后检查 howto Formatted string literals

print(f'{v1} is {"greater" if v1 > v2 else "less"} than {v2}')

答案 1 :(得分:2)

您仍然必须遵守有关quotes within quotes的规则:

v1 = 5
v2 = 6

print(f'{v1} is {"greater" if v1 > v2 else "less"} than {v2}')

# 5 is less than 6

或者更具可读性:

print(f"{v1} is {'greater' if v1 > v2 else 'less'} than {v2}")

请注意,常规字符串允许使用\',即对引号内的引号使用反斜杠。 f字符串as noted in PEP498中不允许这样做:

  

反斜杠可能不会出现在表达式中的任何地方。

答案 2 :(得分:0)

引号引起错误。

使用此:

print(f'{v1} is {"greater" if v1 > v2 else "less"} than {v2}')