python - 如何捕获作为打印输出的字符串
问题描述
动机:
s = 诶
这不是一个 ASCII 字符,我们需要抛出一个错误,比如 'The string eh cannot be encoding using the encoding 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'
有没有办法获取错误输出中的原始文本。
解决方案
我假设这是 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))
编辑:第一个示例 ( UnicodeEncodeError
) 实际上不起作用,正如@StephenRauch 指出的那样-修复语法错误后,我将其留在此处...
推荐阅读
- mysql - MySQL JSON_REMOVE 与多数组
- swift - TabView 中的 EnvironmentObject - SwiftUI
- glib - 在 OS X 上未检测到 glibmm-2.4 安装
- pyspark - pyspark ml 是否支持 Ann 回归器?
- flutter - 使用 AnimationController 使其第二次可见后无法为颤振小部件设置动画
- c++ - 如何在函数内打印到标准输出时分离可变参数模板参数
- javascript - Socket.io join() 什么都不做
- wso2 - wso2 api manager 2.6.0 版中的货币化
- c - 如何在我的简单 C 程序中修复这个奇怪的错误?
- javascript - 无法在客户端填充缩略图