Как я могу передать пустую строку в тройную кавычку в Python?

Вот функция, использующая тройную кавычку с большим количеством подэлементов:

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 ответа

Решение

Вы можете сделать это с 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, которая будет просто пустой строкой.

Просто 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>

Не могли бы вы просто использовать 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
Другие вопросы по тегам