这是一个使用带有大量子元素的三引号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
元素?
答案 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>