如果我有一个f-string,其中一个参数可能是None,有没有办法从字符串中自动省略它?
f'{first_name} {prefix} {last_name}'
如果prefix是,None则此字符串将呈现为Arnold None Weber.
我试过f'{first_name} {prefix or ''} {last_name}'但这是一个语法错误.
我试过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}"""
Run Code Online (Sandbox Code Playgroud)
但是,请注意,这并不是您想要的.你不会得到Arnold Weber,但是Arnold Weber,因为两端的空格都不是有条件的.你可以这样做:
f'{first_name} {prefix+" " if prefix else ""}{last_name}'
f'{first_name} {prefix or ""}{" " if prefix else ""}{last_name}'
Run Code Online (Sandbox Code Playgroud)
...但在那时,我认为你不再能获得f-strings的简洁性和可读性.也许考虑不同的东西,比如:
' '.join(part for part in (first_name, prefix, last_name) if part)
' '.join(filter(None, (first_name, prefix, last_name)))
Run Code Online (Sandbox Code Playgroud)
并不是说这更短 - 但逻辑更清晰.
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |