python2.7中字符串格式的奇怪行为

2024-04-19 15:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在处理xml格式的svn日志时,我在脚本中意外地遇到了一个错误。 错误消息是:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)

通过调试输入数据,我发现了问题所在。下面是一个例子:

^{pr2}$

你能解释一下格式有什么问题吗? 似乎它在字符串字节之前看到了u,并尝试从UTF8解码它。 然而,在Python3中,上面的示例可以正常工作。在


Tags: in脚本消息格式错误asciipositionsvn
1条回答
网友
1楼 · 发布于 2024-04-19 15:46:59

您正在混合Unicode和字节字符串值。使用unicode格式:

print u'{}'.format(a)

演示:

^{pr2}$

在python3中,字符串默认为unicode值;在python2中,u"..."表示unicode值,而常规字符串("...")是byte字符串。在

将字节字符串和unicode值混合使用默认的编解码器(ASCII)进行自动编码或解码,这就是这里发生的事情。str.format()方法必须将Unicode值编码为字节字符串以进行插值。在

相关问题 更多 >