Unicode(UTF-8)在Python中读取和写入文件

Unicode(UTF-8)在Python中读取和写入文件

我在理解文本读取和写入文件时遇到了一些大脑失败(Python 2.4)。


# The string, which has an a-acute in it.

ss = u'Capit\xe1n'

ss8 = ss.encode('utf8')

repr(ss), repr(ss8)

(“u'Capit \ xe1n'”,“'Capit \ xc3 \ xa1n'”)


print ss, ss8

print >> open('f1','w'), ss8


>>> file('f1').read()

'Capit\xc3\xa1n\n'

所以我输入Capit\xc3\xa1n我最喜欢的编辑器,在文件f2中。


然后:


>>> open('f1').read()

'Capit\xc3\xa1n\n'

>>> open('f2').read()

'Capit\\xc3\\xa1n\n'

>>> open('f1').read().decode('utf8')

u'Capit\xe1n\n'

>>> open('f2').read().decode('utf8')

u'Capit\\xc3\\xa1n\n'

我在这里不理解什么?显然,我缺少一些重要的魔法(或者很有道理)。在文本文件中键入什么来获得正确的转换?


我真正没有想到的是,UTF-8表示的重点是,如果你真的不能让Python识别它,那么它来自外部。也许我应该只是JSON转储字符串,并使用它,因为它有一个asciiable表示!更重要的是,当从文件进入时,Python会识别和解码这个Unicode对象的ASCII表示吗?如果是这样,我怎么得到它?


>>> print simplejson.dumps(ss)

'"Capit\u00e1n"'

>>> print >> file('f3','w'), simplejson.dumps(ss)

>>> simplejson.load(open('f3'))

u'Capit\xe1n'


吃鸡游戏
浏览 2955回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python