尝试替换正则表达式时出现意外问号

2024-09-27 09:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的Sublime venv Python构建系统中运行这个文件test.py

import re

text = "skull ☠️..."
print(text)
print(repr(text))

x = re.sub(r' *[\u2600-\u26FF]', r'', text)
print(x)
print(repr(x))

并按预期在升华窗口中查看输出:

skull ☠️...
'skull ☠️...'
skull️...
'skull️...'

但当我在Windows 10中从命令行运行同一个文件时,我得到了一个奇怪的问号:

enter image description here

在Google Colab中,它也能按预期工作:

enter image description here

有一个索引为5的不可见符号:

enter image description hereenter image description here

这里发生了什么事?如何删除☠️而不在其位置添加任何问号或零宽度符号


Tags: 文件textpytestimportrevenv系统
2条回答

要识别剩下的字符,可以将其粘贴到某些联机工具中,如this one

左边的字符是^{}

您可以将其匹配或替换为:^{}

连同您当前的模式:^{}

  1. Windows命令提示符是一个文本用户界面。那么,为什么要在纯文本界面上输出像表情符号这样的图形符号呢?为在Windows控制台窗口中绘制字符和符号而配置的字体必须支持希望在控制台窗口中看到的字符和符号。 因此,您只需将自定义字体添加到cmd中,它就可以支持此表情符号的绘制。下面是一个链接,帮助您将自定义字体添加到命令提示符https://www.maketecheasier.com/add-custom-fonts-command-prompt-windows10/

  2. Windows默认控制台主机(conhost.exe)不支持打印Unicode字符。然而,新的Windows终端确实如此。在Windows终端(wt.exe)中运行该代码,因为它完全支持Unicode。 根据这个答案:does all windows command prompt not support emoji?

  3. 这是一篇非常有趣的文章,介绍了每个程序员绝对需要了解的编码和字符集,以处理文本https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/将帮助您了解每个windows版本的编码。 我希望我能帮助你

相关问题 更多 >

    热门问题