Python Unicode:如何用空格替换无法使用utf8解码的字符?

6
如何使用空格替换无法解码为utf8的字符?
# -*- coding: utf-8 -*-
print unicode('\x97', errors='ignore') # print out nothing
print unicode('ABC\x97abc', errors='ignore') # print out ABCabc

如何打印出ABC abc而不是ABCabc?注意,\x97只是一个示例字符。无法解码的字符是未知输入。

  • 如果我们使用errors='ignore',它将什么也不打印。
  • 如果我们使用errors='replace',它将用一些特殊字符替换该字符。
2个回答

9

Stack Overflow允许多于一个解决方案吗?@Kasramvd和你都提供了出色的答案...在这种情况下该怎么办呢? - DehengYe

3
您可以使用try-except语句来处理UnicodeDecodeError错误:
def my_encoder(my_string):
   for i in my_string:
      try :
         yield unicode(i)
      except UnicodeDecodeError:
         yield '\t' #or another whietespaces 

然后使用str.join方法来连接您的字符串:

print ''.join(my_encoder(my_string))

演示:

>>> print ''.join(my_encoder('this is a\x97n exam\x97ple'))
this is a   n exam  ple

\x97 只是一个示例字符。无法解码的字符是未知输入。 - DehengYe
@DehengYe 只是一个打字错误,已经修复。 - Mazdak
非常有帮助的答案!@Kasramvd - DehengYe
希望你不介意。你和@HelloWorld都提供了出色的答案。但是Stack Overflow只允许一个解决方案。 - DehengYe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接