【问题标题】:Interpolation of a str.join() via f-string通过 f 字符串对 str.join() 进行插值
【发布时间】:2019-08-15 06:47:57
【问题描述】:

尝试插入 str.join() 操作:

>>> a = ["a", "b"]
>>> " ".join(a)
'a b'
>>> str = f"data -> {" ".join(a)}"
  File "<stdin>", line 1
SyntaxError: f-string: expecting '}'

f-String 不允许插值这样的操作?

【问题讨论】:

  • 你的预期输出是什么?
  • @Jack I eextect 'data --> a b'

标签: interpolation python-3.7 f-string


【解决方案1】:

试试这个方法:

a = ["a", "b"]
tmp = " ".join(a)
str = f"data --> {tmp}"
str

输出:

'数据 --> a b'

【讨论】:

  • 所以我不能直接插入 str.join(),这是预期的行为?
  • @DreadAngel - 是的,f-strings 需要一个变量(在这种情况下为tmp),而不是像join() 这样的方法。
【解决方案2】:

没有什么能阻止您在 join 方法上使用 f 插值。

这里发生的事情是你用第二个" 结束你的字符串。这会导致语法错误,因为您的 f 字符串中只有一个 {。使用三引号或单引号,以便引号字符可以包含在您的字符串中。

>>> f"""data -> {" ".join(a)}"""
'data -> a b'
>>> f'data -> {" ".join(a)}'
'data -> a b'

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多