从复制的文本中剥离除可见字符之外的所有字符(不可见的控制字符破坏代码)

Stripping all but visible characters from copied text (Invisible control characters corrupting code)

我从一本 kindle 电子书中复制了一些代码,用于粘贴到 Jupyter 笔记本中。 Python 尝试 运行 代码时报告错误。对于上下文,我 运行 在 VSCode 中使用笔记本,但这本身并不是问题所在。我用来方便复制的 chrome 扩展名是 here

以下是我在将文本从 kindle 电子书粘贴到笔记本中时在编辑器中看到的示例:

housing["income_cat"] = pd.cut(housing["median_income"], bins=[0., 1.5, 3.0, 4.5, 6., np.inf], labels=[1, 2, 3, 4, 5]) 
housing["income_cat"].hist()

Jupyter notebook 报告SyntaxError: invalid character in identifier

当我在 Notepad++ 中检查编码时,我看到编码报告为 UTF-8。

如果我转换为 UTF8 并以 ANSI 格式查看,我会看到字符串:

housing["income_cat"] = pd.cut(housing["median_income"], bins=[0., 1.5, 3.0, 4.5, 6., np.inf], labels=[1, 2, 3, 4, 5]) housing["income_cat"].hist()

如果我转换为 ANSI 并查看为 UTF8,我会看到 Â 替换为符号 xA0

因此似乎有一个控制字符与文本一起被复制。

有没有我可以粘贴的工具,或者我可以使用 notepad++ 去除可见白色 space 和文本以外的所有内容的方法?

更新

我需要充分应用以下分辨率,所以我做了一点 VSCode 扩展来替换非打印 (NPC) 控制字符:

https://github.com/appsoftwareltd/no-control

希望对您有所帮助!


根据这个website的字符是

Character: Â    
ANSI Number: 194    
Unicode Number: 194 
ANSI Hex: 0xC2  
Unicode Hex: U+00C2 
HTML 4.0 Entity: Â    
Unicode Name: Latin capital letter A with circumflex    
Unicode Range: Latin-1 Supplement

解决方案是将 [^\x00-\x7f] 的正则表达式匹配替换为白色 space 字符。

在此处找到:

https://weblogs.asp.net/kon/finding-those-pesky-unicode-characters-in-visual-studio