如何将空字符串传递到 Python 中的三引号 f 字符串?

How can I pass an empty string into triple quoted f-string in Python?

这是一个函数,它使用带有很多子元素的三引号 f 字符串:

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

param 获取 None'' 值时,是否可以获取空的 </child> 元素?

你不能只使用 if 语句吗?

def pass_empty_string(param):
    from lxml import etree
    if param is None or param == '':
        return etree.XML(f'<child></child>')
    xml = etree.XML(f'''
    <root>
        <child>text</child>
        <child>{param}</child>
        ...
    </root>''')
    return xml

一个简单的 if 语句即可:

def pass_empty_string(param):
    if not param:
        param = ''
    xml = etree.XML(f'''<root>
            <child>text</child>
            <child>{param}</child>
        </root>''')
    return xml

xml 看起来像这样:

<root>
    <child>text</child>
    <child></child>
</root>

您可以使用 or 完成此操作:

f"<child>{param or ''}</child>"

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

>>> 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>'

''None 都是假值,所以它会返回到 or 的 RHS,这将只是一个空字符串。