python - 尽管是一个多行字符串,为什么这个 ASCII 艺术字不打印在多行上?

标签 python python-3.x ascii-art

我创建了一个常量,其中包含一些三角形的 ASCII 艺术,如下所示:

ascii_triangle ='''       /\
     /  \
    /    \
   /      \
  /        \
 /__________\ '''

然后我将其用作函数的参数,这样我就可以在函数中使用图片(以及其他一些 ASCII 艺术和其他参数)。该功能并不重要,但问题是当我尝试使用

打印它时
print(ascii_triangle)

在函数中,输出如下所示:

       /         /          /           /            /             /__________\ 

如何让它看起来像一个正常的三角形?

最佳答案

您发布的 ascii-art 尾部有一个反斜杠就在每个换行符之前。如果除了换行符之外没有任何内容,此反斜杠将被视为 line continuation character。 .

观察:

In [118]: x = 'foo \
     ...: bar \
     ...: baz'

In [119]: x
Out[119]: 'foo bar baz'

在上面的示例中,尾部反斜杠后没有任何内容,因此 python 认为它是一个没有任何换行符的字符串。即使您对字符串使用多行引号,也会给予相同的处理。

您需要在反斜杠后添加一个空格,并使您的字符串成为原始文字。

In [123]: ascii_triangle =r'''      /\ 
     ...:      /  \ 
     ...:     /    \ 
     ...:    /      \ 
     ...:   /        \ 
     ...:  /__________\ '''

In [124]: print(ascii_triangle)
      /\ 
     /  \ 
    /    \ 
   /      \ 
  /        \ 
 /__________\ 

尝试在第一个示例中的反斜杠后添加一个空格,你会得到

SyntaxError: EOL while scanning string literal

指示 python 将需要字符串的多行引号。

关于python - 尽管是一个多行字符串,为什么这个 ASCII 艺术字不打印在多行上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45127902/

相关文章:

python - PyCharm 中 Django 文档字符串中未解析的引用

python - A 返回 map 中的树数

linux - 在 linux shell 中进行 ascii 移动

python - 仅从提到关键字的字符串中提取数字

python - 如何更改 ttk.Button 中的字体大小?

python - ThreadPoolExecutor 提前终止最后一个线程

python - 如何垂直打印此列表?

python - 检查数字在哪个范围内

python - 如何在Python 3中按升序对2D数组列进行排序,按降序对2D数组行进行排序

python - 如何使用python docx将表格边框添加到word doc