如何将空字符串传递到 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,这将只是一个空字符串。
这是一个函数,它使用带有很多子元素的三引号 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,这将只是一个空字符串。