python将德语umlaute写入文件
我知道,这个问题已经被问过无数次了。但我仍然坚持着。我正在使用python 2,无法更改为python 3 问题是:python将德语umlaute写入文件,python,Python,我知道,这个问题已经被问过无数次了。但我仍然坚持着。我正在使用python 2,无法更改为python 3 问题是: >>> w = u"ümlaut" >>> w >>> u'\xfcmlaut' >>> print w ümlaut >>> dic = {'key': w} >>> dic {'key': u'\xfcmlaut'} >>> f = io.open('
>>> w = u"ümlaut"
>>> w
>>> u'\xfcmlaut'
>>> print w
ümlaut
>>> dic = {'key': w}
>>> dic
{'key': u'\xfcmlaut'}
>>> f = io.open('testtt.sql', mode='a', encoding='UTF8')
>>> f.write(u'%s' % dic)
然后文件有:
{'key': u'\xfcmlaut'}
我需要{'key':'ulmlaut'}
或{'key':u'ulmlaut'}
我缺少的是什么,我仍然不擅长编码和解码:/我不确定您为什么特别想要这种格式,因为它无法读入任何其他应用程序,但没关系 问题在于,要将字典写入文件,需要将其转换为字符串——为此,Python对其所有元素调用
repr
如果将输出手动创建为字符串,则一切正常:
d = "{'key': '%s'}" % w
with io.open('testtt.sql', mode='a', encoding='UTF8') as f:
f.write(d)
最简单的解决方案是切换到python3,但既然您无法做到这一点,那么在尝试将字典保存到文件中之前,先将其转换为json如何
import io
import json
import sys
reload(sys)
sys.setdefaultencoding('utf8')
w = u"ümlaut"
dic = {'key': w}
f = io.open('testtt.sql', mode='a', encoding='utf8')
f.write(unicode(json.dumps(dic, ensure_ascii=False).encode('utf8')))
我正在尝试以编程方式创建sql文件,该文件将导入mysql数据库。。让我试试你的版本,但是如果你是以编程方式阅读它,为什么要关心转义呢,因为阅读应用程序将能够处理它?为什么不使用像JSON这样合适的交换格式呢?嗯,现在我意识到,我无法手动构建dicts:/。不可能动态构建,但仍然保留umlauts?