【问题标题】:Why does print("..."), i.e. three dots in a row, print blank?为什么 print("..."),即连续三个点,打印空白?
【发布时间】:2022-07-02 08:04:09
【问题描述】:

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

print("one moment...")
one moment...
print("...")

print("..")
..
print("...abc...")
abc...
print("\u2026")
…

这里发生了什么?为什么“...”的解析方式异常?

我在 PyCharm 中使用 ipython。

【问题讨论】:

  • 有时会出现的另一件事——这次似乎不是,但仍然可能值得一提——是字符集怪异+“智能”省略号 (U+2026)。当与任何去除高级字符的东西结合使用时,这会带来双重乐趣。一个裸露的 在 CP-1252 中变成了 … - 或者在 7 位 ASCII 中什么都没有。 "…".encode('utf8').decode('ascii', errors='ignore') == ""
  • 这既不是答案也不是解决方案,但如果你真的想要省略号,你可以从键盘生成一个真实的省略号。在 Mac 上是 opt-;,而在 Windows 上是 alt-0133,数字在数字键盘上。
  • 我在我的 Mac 上使用 PyCharm,并尝试了 print('… watch this space …')print('... watch this space ...')。两者都完美打印。使用 2021.3.1(社区版)。
  • @Manngo 是的,可以,但是你在 pycharm 中尝试过 ipython 吗?

标签: python python-3.x pycharm


【解决方案1】:

看起来这是 Pycharm 的一个已知问题,它的交互式控制台会从打印语句中删除前三个句点。 Here’s the ticket tracking this issue.


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

看起来像:

>>> iprint("...ymmv")

...ymmv

【讨论】:

  • @P2000 2018 年首次报道!似乎他们现在已经解决了一些问题,也许临时解决方案是编写一个自定义打印函数,该函数只检查 str(x).startswith(“…”) 并在为真时添加换行符或其他内容
  • “看起来他们现在应该已经修复了”——你会这么想的,不是吗?我会。但是我一直在Pycharm中遇到非常古老的未修复错误,例如:它仍然无法识别functools.partialmethod()的结果是可调用的,而it's been six years
  • @AaronF 我也不明白。这是一个超级 IDE,如果他们在新功能上花费 80%,我会非常高兴。
  • 也许他们用省略号解释覆盖了它。
【解决方案2】:

这个问题被忽视了很久。关注这里的主题 -> 3 or more dots at beginning of print does not work

下面的帖子也讨论了同样的问题

  1. print("...") produces no output
  2. Console output vanishes dots "..." Racecondition?
  3. Three consecutive periods do not display in Python console when printed.
  4. unexpected print behavior in console

优先级已更改为主要,但自 2018 年以来没有任何讨论、沟通或修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多