在字符串连接期间,仅在设置了变量的情况下如何添加定界符?

时间:2019-04-09 00:14:23

标签: python

仅在该变量具有值的情况下如何添加定界符,在下面的代码中,我试图避免使用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中

4 个答案:

答案 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)