在Python控制台中终止多行字符串

Mex*_*Tek 5 python pycharm python-3.x

在PyCharm中,如果打开Python控制台,则无法终止多行字符串。

以下是在IDLE中进行比较的情况:

>>> words = '''one
two
three'''
>>> print(words)
one
two
three
>>>
Run Code Online (Sandbox Code Playgroud)

但是,如果我在PyCharm中的交互式Python控制台中尝试相同的操作,则在键入最后的3个撇号后,该控制台会期望有更多输入。有人知道为什么吗?

>>> words = '''one
... two
... three'''
...
Run Code Online (Sandbox Code Playgroud)

ely*_*ely 1

我不确定上下文是什么,但在很多情况下,从您想要打印在不同行上的内容创建一个元组/列表并将它们连接起来会更容易"\n"

>>> words = "\n".join(["one", "two", "three"])
Run Code Online (Sandbox Code Playgroud)

您也可以尝试使用三个双引号符号。也许 PyCharm 对分隔的内容感到困惑。我一直想知道 Python 中的这一点,因为字符串可以通过纯粹的并置来连接。因此,'' 'one\n\two\nthree' ''应该有效地采用三个不同的字符串 (1) ''(2)'one\n\two\nthree'和 (3) '',并将它们连接起来。由于不需要它们之间的空格(最小惊讶原则),因此对我来说更直观的是三单(或双)引号会以这种方式解释。但由于三重版本是它自己的特殊字符,所以它不会那样工作。

在 IPython 中,您给出的语法可以正常工作。IPython 还提供了一个很好的神奇命令%cpaste,您可以在其中粘贴多行表达式或语句,然后用 分隔最后一行--,然后按 Enter 键,它会执行粘贴的块。与 PyCharm 相比,我更喜欢 IPython(在 Emacs 的缓冲区中运行),但也许您可以看看是否有类似的魔术函数,或者只是查找该魔术函数的源代码并自己编写一个?