如何在Python中将空字符串传递给三引号f-string?

Gre*_*nev -3 python lxml string-literals f-string

这是一个使用带有大量子元素的三引号f-string的函数:

def pass_empty_string(param):
    from lxml import etree
    xml = etree.XML(f'''
    <root>
        <child>text</child>
        <child>{param}</child>
        ...
    </root>''')
    return xml
Run Code Online (Sandbox Code Playgroud)

获得或重视</child>param是否可以获得空元素?None''

eri*_*rip 5

你可以用or:

f"<child>{param or ''}</child>"
Run Code Online (Sandbox Code Playgroud)

大括号中的任何内容都被评估为表达式,所以......

>>> param = None
>>> f"<child>{param or ''}</child>"
'<child></child>'
>>> param = ''
>>> f"<child>{param or ''}</child>"
'<child></child>'
>>> param = "some valid child"
>>> f"<child>{param or ''}</child>"
'<child>some valid child</child>'
Run Code Online (Sandbox Code Playgroud)

这两个''None是falsy值,所以它会回落到的RHS中or,这将只是一个空字符串.

  • @ Farhan.K`{}`中的任何内容都被计算为表达式 - 这是f-strings的强大功能. (2认同)
  • @Idlehands你甚至可以在`{...}`中添加另一个`f`字符串;-) (2认同)