簡體   English   中英

帶有選項卡和換行符的python格式字符串

[英]python format string with tabs and new line

我正在嘗試格式化一個字符串,其中有時需要在同一變量后添加新行和制表符,而有時不需要。

除了使用兩個不同的變量外,我沒有其他選擇,您是否認為可以使用相同的變量來實現?

示例字符串實際的字符串很長,我可能有一些變量,這些變量有時不需要格式化,有時需要加上換行和制表符。

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)

這可能就是您想要的。

>>> 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'

您可以使用一個函數使僅使用一組值成為可能,如下所示

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"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM