使用
print(" {:d}). {:s} ({:d})".format(i, account, num_char))
我收到错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 4: ordinal not in range(128)
但是当我把它改为:
print " %d). %s (%d)" % (i, account, num_char)
然后没有问题,输出与两个打印相同。
那么第一个表达式出了什么问题,为什么它在第二个表达式中有效?
答案 0 :(得分:6)
在第一个示例中,您正在调用format
str
对象传递unicode
参数的方法。这会导致错误。你应该使用
print(u" {:d}). {:s} ({:d})".format(i, account, num_char))
代替。
在第二个中,您正在使用%
运算符,当格式或对象为unicode
时,该运算符会自动返回unicode
。来自docs:
- 如果提供的对象或格式是unicode字符串,则生成的字符串也将是unicode。
醇>