为什么 print("...")(即连续三个点)打印出空白?

P20*_*000 63 python pycharm python-3.x

我想连续打印三个点(以形成省略号),但 print() 打印空白。

\n
print("one moment...")\none moment...\nprint("...")\n\nprint("..")\n..\nprint("...abc...")\nabc...\nprint("\\u2026")\n\xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n

这里发生了什么事?为什么“...”以特殊方式解析?

\n

我在 PyCharm 中使用 ipython。

\n

U p*_*63A 69

看起来这是 Pycharm 的一个已知问题,其交互式控制台从打印语句中删除了前三个句点。这里\xe2\x80\x99是跟踪此问题的票证

\n
\n目前可能的解决方法是定义如下内容:\n
def iprint(obj):\n    if (s:=str(obj)).startswith("..."):\n        print(" "+s)\n    else:\n        print(s)\n
Run Code Online (Sandbox Code Playgroud)\n

看起来像:

\n
>>> iprint("...ymmv")\n ...ymmv\n
Run Code Online (Sandbox Code Playgroud)\n

  • @P2000于2018年首次报道!看起来他们现在已经修复了,也许临时解决方案是编写一个自定义打印函数,该函数仅检查 `str(x).startswith(“...”)` 并在前面添加换行符或其他内容(如果为 true) (13认同)
  • “看起来他们现在应该已经解决了”——你会这么认为,不是吗?我会。但我一直在 Pycharm 中遇到非常古老的未修复错误,例如:它仍然无法识别 `functools.partialmethod()` 的结果是可调用的,并且[已经六年了](https://youtrack.jetbrains. com/issue/PY-18448/Code-inspector-does-not-recognize-Python-3-functoolspartialmethod-objects-as-callable) (6认同)
  • @AaronF 我也不明白。这是一个超级 IDE,如果他们在接下来的 12 个月内仅在新功能上花费 <20%,但在修复上花费 >80%,我会非常高兴。 (3认同)