繁体   English   中英

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

[英]Unexpected question mark when trying to regex replace

我在我的 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))

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

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

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明 在此处输入图片说明

这里发生了什么事? 我怎样才能删除☠️没有任何问号或零宽度符号?

要确定留在性格,你可以像一些在线工具,它粘贴此一个

左边的字符是U+FE0F : VARIATION SELECTOR-16 [VS16] {emoji variation selector}

你可以匹配或替换它: \️

连同你当前的模式: [\☀-\⛿\️]

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

  2. Windows 默认控制台主机 (conhost.exe) 不支持打印 Unicode 字符。 但是,新的 Windows 终端可以。 在 Windows 终端 (wt.exe) 中运行该代码,因为它完全支持 Unicode。 根据此答案: 是否所有 Windows 命令提示符都不支持表情符号?

  3. 这是一篇非常可爱的文章,内容涉及每个程序员绝对需要了解的有关使用文本的编码和字符集的知识https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software -developer-absolutely-positive-must-know-about-unicode-and-character-sets-no-excuses/将帮助您了解每个 Windows 版本的编码。 我希望我能帮助你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM