我正在使用带有python 2.7的elasticsearch。我必须分析并存储大量文本;经常会出现以下错误: SyntaxError:非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)
错误是:
SyntaxError:第4行/home/user/PycharmProjects/ubuntu/asciiTest.py文件中的非ASCII字符'\ xc3',但未声明编码。
在阅读stackoverflow上的其他答案后,我尝试了:
unicode(test, errors='ignore')
但同样的错误。我不知道如何管理这些特殊字符。
答案 0 :(得分:1)
Python告诉您,您使用的是非ASCII字符,但尚未声明源代码的格式化。
错误通常会附带一条消息,提示您注意PEP-263 - https://www.python.org/dev/peps/pep-0263/
您只需将以下内容添加到源代码的顶部即可:
# coding=<encoding name>
<encoding name>
是您用于源代码的编码。建议使用utf-8。
使用非ASCII时,您应该使用Unicode字符串。您只需在字符串值前添加u
即可实现此目的。
E.g。
test = u'sarà'
删除unicode()
的所有用途。恕我直言,unicode()
不应该在没有给定编码的情况下使用