我在Python中遇到了一个小问题。我无法打印包含“é”字符的字符串。我会解释一下:
for actor in show.actor_objects:
f.write(u"\n <actor>")
f.write(u"\n <name>{0}</name>".format(str(actor.Name).encode('ascii', 'ignore')))
f.write(u"\n <role>{0}</role>".format(str(actor.Role).encode('ascii', 'ignore')))
f.write(u"\n </actor>")
我收到以下错误消息:
root@vroum:21:26:44#~:?1# python test.py -s 2 -n Kaamelott -o outfile.txt -f 0 -l 50 Traceback (most recent call last):
File "test.py", line 104, in <module>
main(sys.argv[1:])
File "test.py", line 99, in main
f.write(u"\n <role>{0}</role>".format(str(actor.Role).encode('ascii', 'ignore')))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)
我该如何解决这个问题?我正在使用Python 2.7。
答案 0 :(得分:1)
问题是你正在将一个unicode字符串传递给str()函数(在Python 2中,str是一个字节字符串)。如果你只是摆脱对str的调用它应该工作:
f.write(u"\n <name>{0}</name>".format(actor.Name.encode('ascii', 'ignore')))
f.write(u"\n <role>{0}</role>".format(actor.Role.encode('ascii', 'ignore')))
然后使用encode('ascii','ignore')将完全删除unicode字符。你可能想做这样的事情:
f.write(u"\n <name>{0}</name>".format(actor.Name).encode('UTF-8'))
f.write(u"\n <role>{0}</role>".format(actor.Role).encode('UTF-8'))