【发布时间】:2016-11-28 14:25:33
【问题描述】:
据我所知,python 的概念是在字符串中只包含有效字符,但在我的情况下,操作系统将在我必须处理的路径名中提供具有无效编码的字符串。所以我最终得到了包含非 unicode 字符的字符串。
为了纠正这些问题,我需要以某种方式显示这些字符串。不幸的是,我无法打印它们,因为它们包含非 Unicode 字符。有没有一种优雅的方法可以以某种方式替换这些字符,至少对字符串的内容有所了解?
我的想法是逐个字符处理这些字符串,并检查存储的字符是否实际上是有效的 unicode。如果出现无效字符,我想使用某个 unicode 符号。但是我该怎么做呢?使用codecs 似乎不适合该目的:我已经有一个由操作系统返回的字符串,而不是字节数组。将字符串转换为字节数组似乎涉及解码,这在我的情况下当然会失败。所以看来我被卡住了。
您对我如何创建这样的替换字符串有什么建议吗?
【问题讨论】:
-
请在您的问题中包含一个示例字符串;使用
print repr(obj)生成样本。您可能可以使用适当的errors模式让 Python 为您插入占位符。 -
.decode("utf-8","ignore") 忽略坏字符。
-
在 bash shell 中,我得到问号作为替换字符。在文件管理器中,我看到一个倒置的问号。
-
@RegisMay:是的,Python 可以给你一个类似的字符,但我想看看一些实际数据(所以我可以根据 type 调整我的答案例如,您拥有的数据)。
标签: python string unicode character-encoding