Python +;和%?
如果我这样做:Python +;和%?,python,python-2.5,Python,Python 2.5,如果我这样做: logging.debug('subject: '+subject) logging.debug('body: '+body) 那么它工作得很好。 如果我将其替换为: logging.debug('subject: %s, body: %s' % (subject, body)) 然后我得到 UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(
logging.debug('subject: '+subject)
logging.debug('body: '+body)
那么它工作得很好。
如果我将其替换为:
logging.debug('subject: %s, body: %s' % (subject, body))
然后我得到
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
如何避免这个错误
Upd。添加了第二个变量
body
subject
和body
是字符串变量。这就是它的用法(python2.7
):
e、 g.将格式规范与打印一起使用
:
>>> sr = "aaaaaa"
>>> print "d%s" % s
daaaaaa
这就是它的使用方法(python
2.7
):
e、 g.将格式规范与打印一起使用
:
>>> sr = "aaaaaa"
>>> print "d%s" % s
daaaaaa
我会这样使用它:
logging.debug(u'subject: %s', subject)
在您的例子中,主题
似乎是unicode。所以格式也应该是unicode
执行'subject:'+subject
操作时,如果其中一个操作数是unicode,则另一个操作数将自动转换为unicode
请注意,我进行了
debug(u'subject:%s',subject)
而不是debug(u'subject:%s'%subject)
-因此字符串仅在记录器实际发出记录时格式化。我将如何使用它:
logging.debug(u'subject: %s', subject)
在您的例子中,主题
似乎是unicode。所以格式也应该是unicode
执行'subject:'+subject
操作时,如果其中一个操作数是unicode,则另一个操作数将自动转换为unicode
请注意,我进行了
debug(u'subject:%s',subject)
而不是debug(u'subject:%s'%subject)
-因此,只有当记录器实际发出记录时,才会对字符串进行格式化。+
用于连接,%
用于字符串格式化。Python的哪个版本?您是否可以发布打印主题
(或者打印(主题)
的输出,如果是在Python 3.x中)?主题
变量中存储了什么类型的值?它是一个字符串还是别的什么?不,一个空括号是用来分组的,不能使某个东西成为元组。您必须使用(subject,)
来创建元组。+
用于连接,%
用于字符串格式。Python的哪个版本?您可以发布打印主题
(或者打印(subject)
的输出(如果在Python 3.x中)?主题
变量中存储了什么类型的值?它是一个字符串还是别的什么?不,一个空括号是用来分组的,不能使某个东西成为元组。您必须使用(subject,)
来创建一个元组。这是真的,但是如果您建议避免使用subject
周围的括号,则它不会改变<代码>'%s'%s和'%s%%(s)
是相同的。在Python2和Python3.True中都是这样,但是如果您建议避免使用subject
周围的括号,那么它不会改变<代码>'%s'%s和'%s%%(s)
是相同的。在Python2和Python3中。谢谢,实际上我已经简化了问题中的代码。实际上,我有类似调试的东西('subject:%s,body:%s%%(subject,body)),我也尝试过使用日志记录。debug(u'body:%s%%(body))
,仍然得到UnicodeDecodeError:'ascii'编解码器无法解码位置0处的字节0xd0:ordinal不在范围内(128)
正文
应该是ascii或unicode。尝试:logging.debug(u'body:%s'%body.decode('utf-8'))
如果body是utf-8编码的。谢谢!解码body
很有帮助。谢谢,实际上我已经简化了问题中的代码。实际上,我有类似调试的东西('subject:%s,body:%s%%(subject,body)),我也尝试过使用日志记录。debug(u'body:%s%%(body))
,仍然得到UnicodeDecodeError:'ascii'编解码器无法解码位置0处的字节0xd0:ordinal不在范围内(128)
正文
应该是ascii或unicode。尝试:logging.debug(u'body:%s'%body.decode('utf-8'))
如果body是utf-8编码的。谢谢!解码正文
有帮助。