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

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

<分区>

我很喜欢 python 3.6 中新的 f-Strings,但是当我试图在表达式中返回一个 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

我在这里错过了什么?

最佳答案

您仍然必须遵守有关 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 :

Backslashes may not appear anywhere within expressions.

关于python - 语法无效 - 表达式返回 f-String 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609639/

相关文章:

python - 使用 For 循环缩短重复代码以递增变量。

c++ - 允许用户在内部实现链表时与 std::strings 交互?

python - 如何在 peewee 查询的文本字段中搜索子字符串

python-3.x - 无法从 Windows 主机连接到 WSL2 上的本地服务器

python - 查询维护外键关系的CSV文件?这可能吗?

Python/Flasks/Socketio,socketio.emit(...) 不发出

python - "with"语句中的变量范围?

python - 有没有办法直接在 python (或 Ironpython)中导入 c *.lib 而不进行任何包装?

python - 创建字符串的变体

java - 按字节截断字符串