【问题标题】:How to print multiple lines of text with Python如何使用 Python 打印多行文本
【发布时间】:2016-01-24 19:17:53
【问题描述】:

如果我想在 Python 中打印多行文本而不为每一行输入 print(''),有没有办法做到这一点?

我将它用于 ASCII 艺术。

(Python 3.5.1)

【问题讨论】:

  • 是的,它被称为for循环...
  • 这可以通过简单的谷歌搜索来解决。 "\n" 可用于换行符,或者如果您要多次打印相同的内容,则应使用 for 循环。
  • 您应该包括如何打印多行为每一行打印。正确的答案取决于您从哪里开始。

标签: python python-3.x


【解决方案1】:

您可以使用 三重 引号(单 ' 或双 "):

a = """
text
text
text
"""

print(a)

【讨论】:

  • 这也适用于 f 字符串并引发错误
【解决方案2】:

据我所知,有三种不同的方式。

在打印中使用os.linesep

print(f"first line{os.linesep}Second line")

在打印中使用sep=os.linesep

print("first line", "second line", sep=os.linesep)

使用三引号和多行字符串:

print("""
Line1
Line2
""")

【讨论】:

  • 这(尤其是前两种方法)对于包非常有用,这样缩进就不会弄乱了。
【解决方案3】:

我想回答以下与此有点不同的问题:

Best way to print messages on multiple lines

他也想显示重复字符的线条。他想要这个输出:

----------------------------------------
# Operator Micro-benchmarks
# Run_mode: short
# Num_repeats: 5
# Num_runs: 1000

----------------------------------------

您可以使用乘法在 f 字符串中创建这些行,如下所示:

run_mode, num_repeats, num_runs = 'short', 5, 1000

s = f"""
{'-'*40}
# Operator Micro-benchmarks
# Run_mode: {run_mode}
# Num_repeats: {num_repeats}
# Num_runs: {num_runs}

{'-'*40}
"""

print(s)

【讨论】:

    【解决方案4】:

    三引号的答案非常适合 ASCII 艺术,但对于那些想知道的人来说 - 如果我的多行是一个元组、列表或其他返回字符串的可迭代对象(可能是列表理解?),那么如何:

    print("\n".join(<*iterable*>))
    

    例如:

    print("\n".join(["{}={}".format(k, v) for k, v in os.environ.items() if 'PATH' in k]))
    

    【讨论】:

    • 这可能需要在可迭代的元素上添加对 str() 的调用,因为 print 通常会这样做,但 join 不会。 print("\n".join([str(x) for x in iterable])
    【解决方案5】:

    我意识到这是一个旧线程,但我的评论可能会对某人有所帮助,所以这里是: 对于 ASCII 艺术,您不想转义字符并尝试解决,因此将“r”放在三引号之前告诉 python 它是“原始”格式的多行注释,例如: print(r""" 你的作品在这里""")

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多