仅在该变量具有值的情况下如何添加定界符,在下面的代码中,我试图避免使用2个下划线,例如:foo_bar__baz
,将始终设置a,b,d,仅c是可选的,还有更Python化的方法吗?
>>> a_must='foo'
>>> b_must='bar'
>>> c_optional=''
>>> d_must='baz'
>>>
>>> f'{a_must}_{b_must}_{c_optional}_{d_must}' if c_optional else
f'{a_must}_{b_must}_{d_must}'
'foo_bar_baz'
在python3.6中
答案 0 :(得分:6)
您可以在f-string
本身中编写条件:
f'{a_must}_{b_must}_{c_optional+"_" if c_optional else ""}{d_must}'
输出:
'foo_bar_baz'
答案 1 :(得分:2)
要灵活一点,可以使用以下方法:
variables = [a_must, b_must, c_optional, d_must]
'_'.join([x for x in variables if x])
答案 2 :(得分:0)
您可以构建令牌列表,并使用str.join
将列表连接到以_
作为分隔符的字符串中。
tokens = [a_must, b_must]
if c_optional:
tokens.append(c_optional)
tokens.append(d_must)
print('_'.join(tokens))
答案 3 :(得分:0)
您的解决方案工作正常,只需要一点格式化即可。我添加了打印语句以进行测试。
a_must='foo'
b_must='bar'
c_optional=''
d_must='baz'
if c_optional:
result = f'{a_must}_{b_must}_{c_optional}_{d_must}'
else:
result = f'{a_must}_{b_must}_{d_must}'
print(result)