yay*_*ayu 2 python string formatting
我有一个实例属性为a,b,c的类.我使用textwrap但它不起作用.
def __str__(self):
import textwrap.dedent
return textwrap.dedent(
"""#{0}
{1}
{2}
""".format(self.a,self.b,self.c)
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,我得到的输出就像
a
b
c
Run Code Online (Sandbox Code Playgroud)
使用渲染字符串时""",会计算换行符和空格.如果你想让它在没有dedent的情况下工作,你的代码应如下所示:
def __str__(self):
return """#{0}
{1}
{2}
""".format(self.a,self.b,self.c)
Run Code Online (Sandbox Code Playgroud)
否则,之前{1}和之前的选项卡{2}也在字符串中.或者,您可以使用:
"#{0}\n{1}\n{2}\n".format(self.a,self.b,self.c)
Run Code Online (Sandbox Code Playgroud)
关于dedent以及为什么它不起作用,请注意文档中的这一行:
"hello"和"\ thello"这些行被认为没有共同的前导空格.
因此,如果你想让dedent工作,你需要每行开始相同,所以你的代码应该是:
return textwrap.dedent(
"""\
#{0}
{1}
{2}
""".format(self.a,self.b,self.c))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每行开头\t,dedent识别并删除.
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |