如果我有一个f字符串,其中一个参数可能为None
,有没有办法自动从字符串中忽略它?
f'{first_name} {prefix} {last_name}'
如果prefix
为None
,则此字符串将呈现为Arnold None Weber
。
我尝试了f'{first_name} {prefix or ''} {last_name}'
,但这是语法错误。
答案 0 :(得分:6)
我尝试了f'{first_name} {prefix或}} {last_name}',但这是语法错误。
它是语法错误的唯一原因是您试图将单引号放在单引号内。所有常用的修复方法都可以使用:
f'{first_name} {prefix or ""} {last_name}'
f"{first_name} {prefix or ''} {last_name}"
f"""{first_name} {prefix or ''} {last_name}"""
但是,请注意,这并不能完全满足您的要求。您不会得到Arnold Weber
,而不会得到Arnold Weber
,因为两端的空格都不是有条件的。您可以执行以下操作:
f'{first_name} {prefix+" " if prefix else ""}{last_name}'
f'{first_name} {prefix or ""}{" " if prefix else ""}{last_name}'
…但是到那时,我认为您不再从f字符串中获得简洁性和可读性的好处。也许考虑一些不同的东西,例如:
' '.join(part for part in (first_name, prefix, last_name) if part)
' '.join(filter(None, (first_name, prefix, last_name)))
不是说这更短了( ),但是逻辑上更加清晰了。
答案 1 :(得分:1)
当然是语法错误;你打断了绳子。
year rainfall(per 15 min)
2006 1
2006 1.2
2006 1.3
2006 0