Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何处理Pymongo中带有口音的角色_Python_Mongodb_Encoding_Pymongo - Fatal编程技术网

Python 如何处理Pymongo中带有口音的角色

Python 如何处理Pymongo中带有口音的角色,python,mongodb,encoding,pymongo,Python,Mongodb,Encoding,Pymongo,我正在处理一个包含西班牙语字符如á、é、í、ñ等的数据库。。。 导入这些字符效果很好,使用命令行可以显示字符在数据库中的编码正确: > use climaescolar switched to db climaescolar > db.preguntas.findOne() { "_id" : ObjectId("55a912e69b874f7cc9afa322"), "Indice" : "A-1", "Pregunta" : "Er

我正在处理一个包含西班牙语字符如á、é、í、ñ等的数据库。。。 导入这些字符效果很好,使用命令行可以显示字符在数据库中的编码正确:

> 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')}
(注意,“Única respuesta”显示为“\xdanica respuesta”)


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

我认为这是打印功能的一个功能,而不是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

我认为这是打印功能的一个特性,而不是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

我得到:
Respuesta:1.Hombre-2.Mujer Respuestas posibles:2 Pregunta:Eres:Respuestas maximas:1 Traceback(最近一次调用):文件“mongoExample.py”,第7行,正在打印(u'{0}:{1})。格式(键,值))Unicode编码错误:“ascii”编解码器无法将字符u'\xda'编码到位置11:序号不在范围内(128)
我得到:
Respuesta:1.Hombre-2.Mujer Respuestas posibles:2 Pregunta:Eres:Respuestas maximas:1 Traceback(最近一次调用):文件“mongoExample.py”,第7行,打印(u'{0}:{1})。格式(键,值))Unicodeincoder错误:“ascii”编解码器无法对位置11处的字符u'\xda'进行编码:序号不在范围内(128)
如果有人试图处理带有西班牙语字符的数据库,我还要补充一点,那就是我必须使用UTF-8编码保存tsv文件(而不是带有BOM的UTF-8,因为它会在文件的开头引入一个
\ufeff
字符)。如果有人试图处理带有西班牙语字符的数据库,我还想补充一点,我必须使用UTF-8编码保存tsv文件(而不是带有BOM的UTF-8,因为它将在文件开头引入
\ufeff
字符)。