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

时间:2018-02-09 15:49:01

标签: python lxml string-literals f-string

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

poly = Polygon(polypoints)

def pass_empty_string(param): from lxml import etree xml = etree.XML(f''' <root> <child>text</child> <child>{param}</child> ... </root>''') return xml 获得</child>param值时,是否可以获得空的None元素?

3 个答案:

答案 0 :(得分: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都是假值,因此会回落到or的RHS,这只是一个空字符串。

答案 1 :(得分: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

答案 2 :(得分: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>