带有制表符和新行的python格式字符串

问题描述 投票:0回答:2

我正在尝试格式化一个字符串,其中相同的变量有时需要附加新行和制表符,其他时候不需要。

我没有看到任何其他选项,但使用两个不同的变量,你认为这可以使用相同的变量实现吗?

示例字符串实际字符串很长,我可能有些变量有时不需要格式化,有时需要应用新行和制表符。

test_str="""
list {values} 
list
    {values} 
"""

对于上面我想实现以下输出。

list 1,2,3 
list
    1,
    2,
    3 

当前的方法,这是行不通的。

values = ",".join(["1","2","3"])
print test_str.format(values=values)

如果我将values更改为values1values2,那么我可以应用不同的格式。

values1 = ",".join(["1","2","3"])
values2 = ",\n\t".join(["1","2","3"])
print test_str.format(values1=values1, values2=values2)
python string python-2.7
2个回答
2
投票

这可能就是你想要的。

>>> test_str = '''
... list {}
... list
...     {}
... '''
>>> values
['1', '2', '3']
>>> print(test_str.format(','.join(values), ',\n\t'.join(values)))

list 1,2,3
list
    1,
    2,
    3

附录:

请注意,该函数以新的f字符串的形式创建它返回的字符串,从而允许替换函数或其中的其他表达式返回的值。

>>> def a_string(v1, v2):
...     def f1(val):
...         return '---'+val
...     def f2(val):
...         return '+++'+val
...     return f'''{f1(v1)} is bigger than {f2(v2)}'''
... 
>>> a_string('2', '1')
'---2 is bigger than +++1'

-1
投票

您可以使用函数来仅使用一组值,如下所示

test_str="""
list {values1} 
list
\t{values2} 
"""

def test_format(values):
    values1 = ",".join(values)
    values2 = ",\n\t".join(values)
    return test_str.format(values1=values1, values2=values2)

print test_format(["1", "2", "3"])
© www.soinside.com 2019 - 2024. All rights reserved.