如何捕获作为打印输出的字符串

时间:2018-09-27 06:26:18

标签: python string unicode encode non-ascii-characters

动机:

s =  诶

这不是ASCII字符,我们需要引发类似以下内容的错误 '字符串诶不能使用ASCII编码

进行编码

但是如果我们做类似的事情,

raise UnicodeEncodeError('The string %s cannot be encoded using the encoding 
%s',%(s, encoding))

以上内容将引发该错误。 但是,如果我们只是不指定任何编码就这样做:

print(s)
诶

我猜这是因为它只是将字节转储到字符串中。

类似这样也会引起错误:

print ('{}'.format(str(s)))

,下面给出了unicode转换:

 print('%s' ,%repr(s))
 u'\u8bf6'

有没有办法获取错误输出中的原始文本。

1 个答案:

答案 0 :(得分:0)

我假设这是Python 2.7?

尝试一下:

raise UnicodeEncodeError(u'The string %s cannot be encoded using the encoding 
                         %s' %(s, encoding))

关键是u'...'文字是unicode文字-因此您实际上可以在其中包含unicode字符,而不必尝试将unicode字符编码为ascii。

还请注意,在应用str(s)时,您会将其转换回ascii。因此,请执行以下操作:

print(u'{}'.format(s))

编辑:@StephenRauch指出,第一个示例(UnicodeEncodeError)实际上不起作用-修复语法错误后,我将其留在此处...