我有一个恼人的问题,我试图将一系列json数据写入文本文档,但是,每当遇到这些类型的字符时,python就会引发UnicodeEncodeError。
根据python 3的大更新,这些字符打印到控制台就好了,我们去的时候就出问题了
with open("filename.txt", "a") as file
file.write("I ♥ ice cream")
file.close()
由于我还是蟒蛇的新手,我还没有丝毫的线索如何解决这个问题,任何想法?
答案 0 :(得分:1)
了解如何解决这个问题!
首先,我要感谢@JJJ,因为暗示我走上了正确的轨道,但是我唯一的批评是所提出的解决方案不是很直接,对于那些不了解字节重要性的人而言这可能是一个挑战。
基本上问题是我的计算机使用的默认编码方法(操作系统是标准的胜利10),即cp1252。
当进入python并让程序运行一些简单的代码来测试它时,它更清楚地说明了问题,因此我们可以找到更可行的解决方案。
text = "I ♥ IceCream"
text = text.encode("cp1252")
open('People Jobs.txt','a').write(text)
在IDLE中运行它,我们得到这个:
UnicodeEncodeError: 'charmap' codec can't encode character '\u2665' in position 2: character maps to <undefined>
啊!现在我们可以看到我们的问题!编解码器无法编码字符!知道了这一点,我们可以使用utf-8对字符串进行编码,然后将其写入文件,如下所示:
text = "I ♥ IceCream"
text = text.encode("utf-8")
open('People Jobs.txt','a').write(text)
运行这个,我们终于得到:
b'I \xe2\x99\xa5 IceCream'
哪些可以写入文件无后顾之忧。我们可以使用解码方法将其重新转换为原始消息,但是出于我的目的,我们不需要这样做。
再一次,我要感谢那些对我的帖子发表评论的人,你对python语言的广泛了解非常有用,我非常感激。
希望我看到这些简单的编程原则的疏忽会让他人在笑到这篇文章时受益
但是嘿,这就是我有这个名字的原因!
所以直到下一次,
P.S @Pratik K感谢您提醒我如何以更紧凑的方式编写本文,我很感激:)(已经做了一段时间的C ++,所以我已经忘记了python)
答案 1 :(得分:0)
我试了一下,似乎工作得很好。只是旁注,而不是使用with ...
,您也可以将其写为:open(filename, 'a' ).write(string)
。这将在一行内打开文件,写入/附加到文件并关闭它。
需要明确的是,您的解决方案的语法是:
with open("filename.txt", 'a') as file:
file.write("I ♥ ice cream")