python中文件的读取和写入_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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值