我正在使用带有 python 2.7 的 elasticsearch。我必须分析和存储大量文本;经常出现如下错误: 语法错误:非 ASCII 字符... 我编写了以下代码进行测试:
import elasticsearch
es = elasticsearch.Elasticsearch("127.0.0.1:9200")
test = 'sarà'
doc = {
'ID':'123456',
'field':unicode(test, errors='ignore'),
}
es.index('test_db','test',doc)
错误是:
语法错误:文件 /home/user/PycharmProjects/ubuntu/asciiTest.py 第 4 行中存在非 ASCII 字符 '\xc3',但未声明编码。
在阅读了 stackoverflow 上的其他答案后,我尝试了:
unicode(test, errors='ignore')
但又出现同样的错误。我不知道如何管理这些特殊字符。
Python 告诉您您使用了非 ASCII 字符,但尚未声明源代码的格式。
该错误通常会伴随一条消息,提示您参考 PEP-263 - https://www.python.org/dev/peps/pep-0263/
您只需将以下内容添加到源代码的顶部即可:
# coding=<encoding name>
<encoding name>
是您用于源代码的编码。建议使用utf-8。
使用非 ASCII 时,应该使用 Unicode 字符串。您只需在字符串值前面添加
u
即可实现此目的。
例如
test = u'sarà'
删除所有
unicode()
的使用。恕我直言,如果没有给定编码,则永远不应该使用unicode()
如果这看起来微不足道,我很抱歉,但我认为它可以为某个地方的某人减轻一些头痛。