代码之家  ›  专栏  ›  技术社区  ›  Greenev

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

  •  -3
  • Greenev  · 技术社区  · 7 年前

    下面是一个使用三引号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> 元素时 param 正在获取 None '' 价值

    3 回复  |  直到 7 年前
        1
  •  5
  •   erip Jigar Trivedi    7 年前

    您可以使用 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 是错误的值,因此它将返回到 ,它将只是一个空字符串。

        2
  •  1
  •   erip Jigar Trivedi    7 年前

    一个简单的 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>
    
        3
  •  1
  •   erip Jigar Trivedi    7 年前

    你就不能用 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