-3

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

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

获取或值时是否可以获取空</child>元素?paramNone''

4

3 回答 3

5

您可以通过以下方式完成此操作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假值,因此它将回退到 的 RHS or,这将只是一个空字符串。

于 2018-02-09T15:57:51.320 回答
1

你不能只使用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
于 2018-02-09T15:52:59.873 回答
1

一个简单的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>
于 2018-02-09T15:56:21.173 回答