如何处理Pymongo中的重音字符

时间:2015-07-17 15:50:06

标签: python mongodb encoding pymongo

我正在处理一个包含西班牙语字符的数据库,如á,é,í,ñ等... 导入它们工作正常,并使用命令行显示字符在数据库中正确编码:

> use climaescolar
switched to db climaescolar
> db.preguntas.findOne()
{
        "_id" : ObjectId("55a912e69b874f7cc9afa322"),
        "Indice" : "A-1",
        "Pregunta" : "Eres:",
        "Tipologia" : "Única respuesta",
        "Respuestas posibles" : 2,
        "Respuestas maximas" : 1,
        "Respuesta" : "1.Hombre-2.Mujer",
        "Adicionales" : "95.Respuesta anulada-96.No Responde-97.Marca más de una respuesta-98.Opciones Incompatibles/incompletas-99.En blanco"
}

(注意“Ú”和“á”正确显示)

但是,当我使用Pymongo处理答案时,字符以unicode格式显示:

from pymongo import MongoClient

client = MongoClient("127.0.0.1", 27017)
db = client["climaescolar"]
col = db.preguntas
print(col.find_one())

返回:

{u'Respuesta': u'1.Hombre-2.Mujer', u'Respuestas posibles': 2, u'Pregunta': u'Eres:', u'Respuestas maximas': 1, u'Tipologia': u'\xdanica respuesta', u'\ufeffIndice': u'A-1', u'Adicionales': u'95.Respuesta anulada-96.No Responde-97.Marca m\xe1s de una respuesta-98.Opciones Incompatibles/incompletas-99.En blanco', u'_id': ObjectId('55a912e69b874f7cc9afa322')}

(请注意“Únicarespuesta”显示为“\ xdanica respuesta”)

我在docs中阅读了有关unicode格式字符串的说明,但未能解决。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为它是打印功能的一个特征,而不是pymongo。

如果您运行以下内容:

from pymongo import MongoClient

client = MongoClient("127.0.0.1", 27017)
db = client["climaescolar"]
col = db.preguntas
for key, value in col.find_one().iteritems():
    print(u'{0}: {1}'.format(key, value))

你会得到

Indice:A-1
Respuesta:1.Hombre-2.Mujer
Respuestas posibles:2.0
Pregunta:Eres:
Respuestas maximas:1.0
Tipologia:Única respuesta
Adicionales:95.Respuesta anulada-96.No Responde-97.Marca más de una respuesta-98.Opciones Incompatibles/incompletas-99.En blanco
_id:55a9272ef7ba789df8b5c858